Current section

Files

Jump to
ash_authentication_phoenix lib ash_authentication_phoenix plug.ex
Raw

lib/ash_authentication_phoenix/plug.ex

defmodule AshAuthentication.Phoenix.Plug do
@moduledoc """
Helper plugs mixed in to your router.
When you `use AshAuthentication.Phoenix.Router` this module is included, so
that you can use these plugs in your pipelines.
"""
alias AshAuthentication.Plug.Helpers
alias Plug.Conn
@doc """
Attempt to retrieve all actors from the connections' session.
A wrapper around `AshAuthentication.Plug.Helpers.retrieve_from_session/2`
with the `otp_app` as extracted from the endpoint.
"""
@spec load_from_session(Conn.t(), keyword) :: Conn.t()
def load_from_session(conn, opts) do
{maybe_otp_app, opts} = Keyword.pop(opts, :otp_app)
otp_app = maybe_otp_app || conn.private.phoenix_endpoint.config(:otp_app)
Helpers.retrieve_from_session(conn, otp_app, opts)
end
@doc """
Attempt to retrieve actors from the `Authorization` header(s).
A wrapper around `AshAuthentication.Plug.Helpers.retrieve_from_bearer/2` with
the `otp_app` as extracted from the endpoint.
"""
@spec load_from_bearer(Conn.t(), keyword) :: Conn.t()
def load_from_bearer(conn, opts) do
{maybe_otp_app, opts} = Keyword.pop(opts, :otp_app)
otp_app = maybe_otp_app || conn.private.phoenix_endpoint.config(:otp_app)
Helpers.retrieve_from_bearer(conn, otp_app, opts)
end
@doc """
Revoke all token(s) in the `Authorization` header(s).
A wrapper around `AshAuthentication.Plug.Helpers.revoke_bearer_tokens/2` with
the `otp_app` as extracted from the endpoint.
"""
@spec revoke_bearer_tokens(Conn.t(), any) :: Conn.t()
def revoke_bearer_tokens(conn, _opts) do
otp_app = conn.private.phoenix_endpoint.config(:otp_app)
Helpers.revoke_bearer_tokens(conn, otp_app)
end
@doc """
Revoke all token(s) in the session.
A wrapper around `AshAuthentication.Plug.Helpers.revoke_session_tokens/2` with
the `otp_app` as extracted from the endpoint.
"""
@spec revoke_session_tokens(Conn.t(), any) :: Conn.t()
def revoke_session_tokens(conn, _opts) do
otp_app = conn.private.phoenix_endpoint.config(:otp_app)
Helpers.revoke_session_tokens(conn, otp_app)
end
@doc """
Store the actor in the connections' session.
"""
@spec store_in_session(Conn.t(), Ash.Resource.record()) :: Conn.t()
defdelegate store_in_session(conn, actor), to: AshAuthentication.Plug.Helpers
end