Current section
Files
Jump to
Current section
Files
lib/plugs/assign_current_user.ex
defmodule AuthN.Plugs.AssignCurrentUser do
def init(opts) do
Keyword.fetch!(opts, :fetch_user)
opts
end
def call(conn, opts) do
fetch_user_fn = Keyword.fetch!(opts, :fetch_user)
user_id = AuthN.SessionStorage.get_user_id(conn)
if user_id do
assign_user(conn, fetch_user_fn.(user_id))
else
conn
end
end
defp assign_user(conn, nil) do
AuthN.SessionStorage.delete_user_id(conn)
end
defp assign_user(conn, user) do
Plug.Conn.assign(conn, :current_user, user)
end
end