29 lines
928 B
Elixir
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
|