Packages
guardian
0.1.0
2.4.0
2.3.2
2.3.1
2.3.0
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.1.2
2.1.1
2.0.0
1.2.1
1.2.0
retired
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-beta.1
1.0.0-beta.0
0.14.6
0.14.5
0.14.4
0.14.3
retired
0.14.2
0.14.1
0.14.0
0.13.0
0.12.0
0.11.1
0.10.1
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.4
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.1
0.1.0
Elixir Authentication framework
Current section
Files
Jump to
Current section
Files
lib/guardian/claims.ex
defmodule Guardian.Claims do
@moduledoc false
import Guardian.Utils
@doc false
def app_claims, do: %{ :iss => Guardian.issuer } |> iat |> ttl
@doc false
def app_claims(existing_claims) do
Dict.merge(app_claims, Enum.into(existing_claims, %{}))
end
@doc false
def aud(claims, nil), do: aud(claims, "token")
@doc false
def aud(claims, audience) when is_atom(audience), do: aud(claims, to_string(audience))
@doc false
def aud(claims, audience), do: Dict.put(claims, :aud, audience)
@doc false
def sub(claims, subject) when is_atom(subject), do: sub(claims, to_string(subject))
@doc false
def sub(claims, subject), do: Dict.put(claims, :sub, subject)
@doc false
def iat(claims), do: Dict.put(claims, :iat, timestamp)
@doc false
def iat(claims, ts), do: Dict.put(claims, :iat, ts)
@doc false
def csrf(claims, token), do: Dict.put(claims, :s_csrf, Guardian.CSRFProtection.signature(token))
@doc false
def ttl(claims = %{ ttl: requested_ttl }) do
claims
|> Dict.delete(:ttl)
|> ttl(requested_ttl)
end
@doc false
def ttl(claims), do: ttl(claims, Guardian.config(:ttl, { 1_000_000_000, :seconds }))
@doc false
def ttl(claims = %{iat: iat}, requested_ttl) do
case { iat, requested_ttl } do
{ nil, _ } -> Dict.put_new(claims, timestamp + 1_000_000_000)
{ iat, { seconds, :seconds } } -> Dict.put(claims, :exp, iat + seconds)
{ iat, { seconds, :second } } -> Dict.put(claims, :exp, iat + seconds)
{ iat, { millis, :millis } } -> Dict.put(claims, :exp, iat + millis / 1000)
{ iat, { millis, :milli } } -> Dict.put(claims, :exp, iat + millis / 1000)
{ iat, { minutes, :minutes } } -> Dict.put(claims, :exp, iat + minutes * 60)
{ iat, { minutes, :minute } } -> Dict.put(claims, :exp, iat + minutes * 60)
{ iat, { hours, :hours } } -> Dict.put(claims, :exp, iat + hours * 60 * 60)
{ iat, { hours, :hour } } -> Dict.put(claims, :exp, iat + hours * 60 * 60)
{ iat, { days, :days } } -> Dict.put(claims, :exp, iat + days * 24 * 60 * 60)
{ iat, { days, :day } } -> Dict.put(claims, :exp, iat + days * 24 * 60 * 60)
_ -> claims
end
end
@doc false
def ttl(claims, requested_ttl), do: claims |> iat |> ttl(requested_ttl)
end