Current section

Files

Jump to
curator priv templates curator.api.install api_guardian.ex
Raw

priv/templates/curator.api.install/api_guardian.ex

defmodule <%= inspect context.web_module %>.Auth.ApiGuardian do
use Guardian, otp_app: :<%= Mix.Phoenix.otp_app() %>,
token_module: Curator.Guardian.Token.Opaque
def subject_for_token(resource, _claims) do
sub = to_string(resource.id)
{:ok, sub}
end
def resource_from_claims(claims) do
claims["sub"]
|> <%= inspect context.module %>.get_user()
end
@behaviour Curator.Guardian.Token.Opaque.Persistence
def get_token(id) do
<%= inspect context.module %>.get_token(id)
end
# NOTE: We pull user_id & description our of claims
# We will also use the sub in place of user_id
# Finally, the token is set here (to a random string)
def create_token(claims) do
user_id = Map.get(claims, "user_id") || Map.get(claims, "sub")
description = Map.get(claims, "description")
claims = claims
|> Map.drop(["user_id", "description"])
token = Curator.Guardian.Token.Opaque.token_id()
attrs = %{
"claims" => claims,
"user_id" => user_id,
"description" => description,
"token" => token,
}
<%= inspect context.module %>.create_token(attrs)
end
def delete_token(token_id) do
case get_token(token_id) do
{:ok, token} ->
<%= inspect context.module %>.delete_token(token)
result ->
result
end
end
end