Packages
Easy to install Auth system with social integration just in 6 steps on Elixir Phoenix
Current section
Files
Jump to
Current section
Files
lib/system/guardian/guardian.ex
defmodule MishkaAuth.Guardian do
use Guardian, otp_app: :mishka_auth
@spec subject_for_token(atom | %{id: any}, any) :: {:ok, binary}
def subject_for_token(resource, _claims) do
# You can use any value for the subject of your token but
# it should be useful in retrieving the resource later, see
# how it being used on `resource_from_claims/1` function.
# A unique `id` is a good subject, a non-unique email address
# is a poor subject.
sub = to_string(resource.id)
{:ok, sub}
end
@spec subject_for_token :: {:error, :reason_for_error}
def subject_for_token() do
{:error, :reason_for_error}
end
@spec resource_from_claims(nil | maybe_improper_list | map) :: {:ok, %{id: any}}
def resource_from_claims(claims) do
# Here we'll look up our resource from the claims, the subject can be
# found in the `"sub"` key. In `above subject_for_token/2` we returned
# the resource id so here we'll rely on that to look it up.
id = claims["sub"]
resource = get_resource_by_id(id)
{:ok, resource}
end
@spec resource_from_claims :: {:error, :reason_for_error}
def resource_from_claims() do
{:error, :reason_for_error}
end
@spec get_resource_by_id(binary()) :: %{id: any}
def get_resource_by_id(id) do
%{id: id}
end
end