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