summaryrefslogtreecommitdiff
path: root/lib/silmataivas_web/plugs/auth.ex
blob: ff5d25bd8d0c493959423f36e18bc1b33888107c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
defmodule SilmataivasWeb.Plugs.Auth do
  import Plug.Conn
  alias Silmataivas.Users
  alias Silmataivas.Repo

  def init(opts), do: opts

  def call(conn, _opts) do
    with ["Bearer " <> user_id] <- get_req_header(conn, "authorization"),
         %Users.User{} = user <- Users.get_user_by_user_id(user_id),
         loaded_user <- Repo.preload(user, :location) do
      assign(conn, :current_user, loaded_user)
    else
      _ ->
        conn
        |> send_resp(:unauthorized, "Unauthorized")
        |> halt()
    end
  end
end