Files
wanderer/lib/wanderer_app_web/controllers/plugs/set_user.ex
Dmitry Popov 4136aaad76 Initial commit
2024-09-18 01:55:30 +04:00

46 lines
883 B
Elixir

defmodule WandererAppWeb.Plugs.SetUser do
@moduledoc false
import Plug.Conn
alias WandererApp.Api.User
def init(opts), do: opts
def call(conn, _opts) do
user_id = get_session(conn, :user_id)
case _load_user(user_id) do
nil ->
conn
|> assign(:current_user, nil)
|> assign(:current_user_role, :none)
user ->
admins = WandererApp.Env.admins()
user_role =
case Enum.empty?(admins) or user.hash in admins do
true ->
:admin
_ ->
:user
end
conn
|> assign(:current_user, user)
|> assign(:current_user_role, user_role)
end
end
defp _load_user(nil), do: nil
defp _load_user(user_id) do
case User.by_id(user_id, load: :characters) do
{:ok, user} -> user
{:error, _} -> nil
end
end
end