defmodule PhilomenaWeb.ApiTokenPlug do alias Philomena.Users alias Plug.Conn def init([]), do: [] def call(conn, _opts) do conn |> maybe_find_user(conn.params["key"]) |> assign_user() end defp maybe_find_user(conn, nil), do: {conn, nil} defp maybe_find_user(conn, token) do user = Users.get_user_by_authentication_token(token) {conn, user} end defp assign_user({conn, user}) do Conn.assign(conn, :current_user, user) end end