legendary-doc-site/apps/content/lib/content_web/plugs/load_user.ex
2020-07-22 19:22:44 +00:00

36 lines
608 B
Elixir

defmodule Content.LoadUser do
@moduledoc """
Loads user into connection if user has session
"""
import Plug.Conn
alias Content.Users
def init(opts) do
opts
end
def call(conn, _) do
handle_auth(conn)
end
defp handle_auth(conn) do
user_id = get_session(conn, :user_id)
if user = (user_id && Users.get_user(user_id)) do
build_conn(conn, user)
else
build_conn(conn, nil)
end
end
defp build_conn(conn, nil) do
conn
|> assign(:current_user, nil)
end
defp build_conn(conn, user) do
conn
|> assign(:current_user, user)
end
end