defmodule Auth0Jwks.Plug.GetUser do @behaviour Plug import Plug.Conn def init(opts), do: opts def call(%{assigns: %{auth0_claims: claims, auth0_access_token: token}} = conn, opts) do user_from_claim_fn = Auth0Jwks.Config.get_opt_or_error(opts, :user_from_claim, __MODULE__) case user_from_claim_fn.(claims, token) do {:ok, current_user} -> assign(conn, :current_user, current_user) _ -> Auth0Jwks.Plug.Response.user_not_found(conn, opts) end end def call(conn, opts), do: Auth0Jwks.Plug.Response.user_not_found(conn, opts) end