towerops/lib/towerops_web/plugs/check_policy_consent.ex

29 lines
928 B
Elixir

defmodule ToweropsWeb.Plugs.CheckPolicyConsent do
@moduledoc """
Plug to check if authenticated users need to re-consent to updated policies.
This plug checks if there are any policy versions newer than the user's
last consent and stores the list of policies requiring re-consent in assigns.
The component can then display a modal prompting the user to accept the
updated policies before continuing.
"""
import Plug.Conn
alias Towerops.Accounts
def init(opts), do: opts
def call(conn, _opts) do
case conn.assigns[:current_user] do
nil ->
# Not authenticated, no need to check consent
assign(conn, :policies_needing_consent, [])
user ->
# Check if user needs to re-consent to any policies
policies_needing_consent = Accounts.policies_needing_reconsent(user.id)
assign(conn, :policies_needing_consent, policies_needing_consent)
end
end
end