Packages
boruta
2.0.1
3.0.0-beta.4
3.0.0-beta.3
3.0.0-beta.2
3.0.0-beta.1
2.3.6
2.3.5
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.2
2.2.1
2.2.0
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.1
2.0.0
2.0.0-rc.1
2.0.0-rc.0
1.2.1
1.2.0
1.1.0
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.2.1
0.2.0
0.1.1
0.1.0
0.1.0-rc.5
0.1.0-rc.4
0.1.0-rc.3
0.1.0-rc.2
0.1.0-rc.1
Core of an OAuth/OpenID Connect provider enabling authorization in your applications.
Current section
Files
Jump to
Current section
Files
lib/boruta/oauth/responses/token.ex
defmodule Boruta.Oauth.TokenResponse do
@moduledoc """
Response returned in case of access token request success. Provides utilities and mandatory data needed to respond to the token part of client credentials, resource owner password, code and hybrid flows.
"""
@enforce_keys [:access_token, :expires_in]
defstruct token_type: "bearer",
access_token: nil,
expires_in: nil,
refresh_token: nil,
id_token: nil
@type t :: %__MODULE__{
token_type: String.t(),
access_token: String.t() | nil,
id_token: String.t() | nil,
expires_in: integer() | nil,
refresh_token: String.t() | nil
}
alias Boruta.Oauth.Token
alias Boruta.Oauth.TokenResponse
@spec from_token(%{
(type :: :token | :id_token) => token :: Boruta.Oauth.Token.t() | String.t()
}) :: t()
def from_token(
%{
token: %Token{
value: value,
expires_at: expires_at,
refresh_token: refresh_token
}
} = params
) do
{:ok, expires_at} = DateTime.from_unix(expires_at)
expires_in = DateTime.diff(expires_at, DateTime.utc_now())
%TokenResponse{
access_token: value,
token_type: "bearer",
expires_in: expires_in,
refresh_token: refresh_token,
id_token: params[:id_token] && params[:id_token].value
}
end
end