defmodule AshAuthentication.Plug.Defaults do
@moduledoc """
Provides the default implementations of `handle_success/3` and
`handle_failure/2` used in generated authentication plugs.
"""
alias Ash.Resource
alias Plug.Conn
import AshAuthentication.Plug.Helpers
import Plug.Conn
@doc """
The default implementation of `handle_success/3`.
Calls `AshAuthentication.Plug.Helpers.store_in_session/2` then sends a
basic 200 response.
"""
@spec handle_success(Conn.t(), {atom, atom}, Resource.record() | nil, String.t() | nil) ::
Conn.t()
def handle_success(conn, _activity, user, _token) do
conn
|> store_in_session(user)
|> send_resp(200, "Access granted")
end
@doc """
The default implementation of `handle_failure/1`.
Sends a very basic 401 response.
"""
@spec handle_failure(Conn.t(), {atom, atom}, any) :: Conn.t()
def handle_failure(conn, _, _) do
conn
|> send_resp(401, "Access denied")
end
end