22 lines
655 B
Elixir
22 lines
655 B
Elixir
defmodule MvWeb.ControllerHelpers do
|
|
@moduledoc """
|
|
Shared helpers for plug-based controllers.
|
|
|
|
The LiveView equivalent lives in `MvWeb.LiveHelpers`; this module is the
|
|
controller-side counterpart that works on a `Plug.Conn`.
|
|
"""
|
|
|
|
alias Mv.Authorization.Actor
|
|
|
|
@doc """
|
|
Returns the request actor for a controller, loaded for authorization.
|
|
|
|
Reads `:current_user` from the connection assigns and ensures it is loaded via
|
|
`Mv.Authorization.Actor.ensure_loaded/1`.
|
|
"""
|
|
@spec current_actor(Plug.Conn.t()) :: Mv.Accounts.User.t() | nil
|
|
def current_actor(conn) do
|
|
conn.assigns[:current_user]
|
|
|> Actor.ensure_loaded()
|
|
end
|
|
end
|