ExOauth2Provider v0.2.3 ExOauth2Provider.OauthAccessTokens View Source

Ecto schema for oauth access tokens

Link to this section Summary

Functions

Creates an access token

Filter expired data

Filter revoked data

Gets all active tokens for resource owner

Gets an old access token by previous refresh token

Gets an access token by the refresh token

Gets an access token by the refresh token belonging to an application

Gets a single access token

Gets the most recent matching access token for a resource owner

Gets existing access token or creates a new one with supplied attributes

Checks if an access token can be accessed

Checks if data has expired

Checks if data has been revoked

Revoke data

Same as revoke/1 but raises error

Revokes token with refresh_token equal to previous_refresh_token and clears :previous_refresh_token attribute

Link to this section Functions

Link to this function create_token(owner, attrs \\ %{}) View Source
create_token(Ecto.Schema.t(), Map.t()) ::
  {:ok,
   %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
     __meta__: term(),
     application: term(),
     application_id: term(),
     expires_in: term(),
     id: term(),
     inserted_at: term(),
     previous_refresh_token: term(),
     refresh_token: term(),
     resource_owner: term(),
     resource_owner_id: term(),
     revoked_at: term(),
     scopes: term(),
     token: term(),
     updated_at: term()
   }}
  | {:error, Ecto.Changeset.t()}

Creates an access token.

Examples

iex> create_token(application, %{scopes: "read write"})
{:ok, %OauthAccessToken{}}

iex> create_token(resource_owner, %{application: application, scopes: "read write"})
{:ok, %OauthAccessToken{}}

iex> create_token(resource_owner, %{scopes: "read write"})
{:ok, %OauthAccessToken{}}

iex> create_token(resource_owner, %{expires_in: "invalid"})
{:error, %Ecto.Changeset{}}
Link to this function filter_expired(data) View Source
filter_expired(Ecto.Schema.t()) :: Ecto.Schema.t() | nil

Filter expired data.

Examples

iex> filter_expired(%Data{expires_in: 7200, inserted_at: ~N[2017-04-04 19:21:22.292762], ...}}
%Data{}

iex> filter_expired(%Data{expires_in: 10, inserted_at: ~N[2017-04-04 19:21:22.292762], ...}}
nil
Link to this function filter_revoked(data) View Source
filter_revoked(Ecto.Schema.t()) :: Ecto.Schema.t() | nil

Filter revoked data.

Examples

iex> filter_revoked(%Data{revoked_at: nil, ...}}
%Data{}

iex> filter_revoked(%Data{revoked_at: ~N[2017-04-04 19:21:22.292762], ...}}
nil
Link to this function get_active_tokens_for(resource_owner) View Source
get_active_tokens_for(Ecto.Schema.t()) :: [
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
]

Gets all active tokens for resource owner.

Examples

iex> get_active_tokens_for(resource_owner)
[%OauthAccessToken{}, ...]
Link to this function get_by_previous_refresh_token_for(access_token) View Source
get_by_previous_refresh_token_for(
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
) ::
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
  | nil

Gets an old access token by previous refresh token.

Examples

iex> get_by_previous_refresh_token_for(new_access_token)
%OauthAccessToken{}

iex> get_by_previous_refresh_token_for(new_access_token)
nil
Link to this function get_by_refresh_token(refresh_token) View Source
get_by_refresh_token(String.t()) ::
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
  | nil

Gets an access token by the refresh token.

Examples

iex> get_by_refresh_token("c341a5c7b331ef076eb4954668d54f590e0009e06b81b100191aa22c93044f3d")
%OauthAccessToken{}

iex> get_by_refresh_token("75d72f326a69444a9287ea264617058dbbfe754d7071b8eef8294cbf4e7e0fdc")
nil
Link to this function get_by_refresh_token_for(application, refresh_token) View Source
get_by_refresh_token_for(
  %ExOauth2Provider.OauthApplications.OauthApplication{
    __meta__: term(),
    access_tokens: term(),
    id: term(),
    inserted_at: term(),
    name: term(),
    owner: term(),
    owner_id: term(),
    redirect_uri: term(),
    scopes: term(),
    secret: term(),
    uid: term(),
    updated_at: term()
  },
  String.t()
) ::
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
  | nil

Gets an access token by the refresh token belonging to an application.

Examples

iex> get_by_refresh_token_for(application, "c341a5c7b331ef076eb4954668d54f590e0009e06b81b100191aa22c93044f3d")
%OauthAccessToken{}

iex> get_by_refresh_token_for(application, "75d72f326a69444a9287ea264617058dbbfe754d7071b8eef8294cbf4e7e0fdc")
nil
Link to this function get_by_token(token) View Source
get_by_token(String.t()) ::
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
  | nil

Gets a single access token.

Examples

iex> get_by_token("c341a5c7b331ef076eb4954668d54f590e0009e06b81b100191aa22c93044f3d")
%OauthAccessToken{}

iex> get_by_token("75d72f326a69444a9287ea264617058dbbfe754d7071b8eef8294cbf4e7e0fdc")
nil
Link to this function get_matching_token_for(resource_owner, application, scopes) View Source
get_matching_token_for(
  Ecto.Schema.t(),
  %ExOauth2Provider.OauthApplications.OauthApplication{
    __meta__: term(),
    access_tokens: term(),
    id: term(),
    inserted_at: term(),
    name: term(),
    owner: term(),
    owner_id: term(),
    redirect_uri: term(),
    scopes: term(),
    secret: term(),
    uid: term(),
    updated_at: term()
  },
  String.t()
) ::
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
  | nil

Gets the most recent matching access token for a resource owner.

Examples

iex> get_matching_token_for(user, application, "read write")
%OauthAccessToken{}

iex> get_matching_token_for(user, application, "read invalid")
nil
Link to this function get_or_create_token(owner, attrs \\ %{}) View Source
get_or_create_token(Ecto.Schema.t(), Map.t()) ::
  {:ok,
   %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
     __meta__: term(),
     application: term(),
     application_id: term(),
     expires_in: term(),
     id: term(),
     inserted_at: term(),
     previous_refresh_token: term(),
     refresh_token: term(),
     resource_owner: term(),
     resource_owner_id: term(),
     revoked_at: term(),
     scopes: term(),
     token: term(),
     updated_at: term()
   }}
  | {:error, Ecto.Changeset.t()}

Gets existing access token or creates a new one with supplied attributes.

Examples

iex> get_or_create_token(application, attrs)
{:ok, %OauthAccessToken{}}

iex> get_or_create_token(user attrs)
{:ok, %OauthAccessToken{}}

iex> get_or_create_token(user attrs)
{:error, %Ecto.Changeset{}}
Link to this function is_accessible?(token) View Source
is_accessible?(%ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
  __meta__: term(),
  application: term(),
  application_id: term(),
  expires_in: term(),
  id: term(),
  inserted_at: term(),
  previous_refresh_token: term(),
  refresh_token: term(),
  resource_owner: term(),
  resource_owner_id: term(),
  revoked_at: term(),
  scopes: term(),
  token: term(),
  updated_at: term()
}) :: boolean()
is_accessible?(nil) :: false

Checks if an access token can be accessed.

Examples

iex> is_accessible?(token)
true

iex> is_accessible?(inaccessible_token)
false
Link to this function is_expired?(arg1) View Source
is_expired?(Ecto.Schema.t() | nil) :: boolean()

Checks if data has expired.

Examples

iex> is_expired?(%Data{expires_in: 7200, inserted_at: ~N[2017-04-04 19:21:22.292762], ...}}
false

iex> is_expired?(%Data{expires_in: 10, inserted_at: ~N[2017-04-04 19:21:22.292762], ...}}
true

iex> is_expired?(%Data{expires_in: nil}}
false
Link to this function is_revoked?(arg1) View Source
is_revoked?(Ecto.Schema.t()) :: boolean()

Checks if data has been revoked.

Examples

iex> is_revoked?(%Data{revoked_at: nil, ...}}
false

iex> is_revoked?(%Data{revoked_at: ~N[2017-04-04 19:21:22.292762], ...}}
true
Link to this function put_scopes(changeset, server_scopes) View Source

Revoke data.

Examples

iex> revoke(data)
{:ok, %Data{revoked_at: ~N[2017-04-04 19:21:22.292762], ...}}

iex> revoke(invalid_data)
{:error, %Ecto.Changeset{}}

Same as revoke/1 but raises error.

Link to this function revoke_previous_refresh_token(access_token) View Source
revoke_previous_refresh_token(
  %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
    __meta__: term(),
    application: term(),
    application_id: term(),
    expires_in: term(),
    id: term(),
    inserted_at: term(),
    previous_refresh_token: term(),
    refresh_token: term(),
    resource_owner: term(),
    resource_owner_id: term(),
    revoked_at: term(),
    scopes: term(),
    token: term(),
    updated_at: term()
  }
) ::
  {:ok,
   %ExOauth2Provider.OauthAccessTokens.OauthAccessToken{
     __meta__: term(),
     application: term(),
     application_id: term(),
     expires_in: term(),
     id: term(),
     inserted_at: term(),
     previous_refresh_token: term(),
     refresh_token: term(),
     resource_owner: term(),
     resource_owner_id: term(),
     revoked_at: term(),
     scopes: term(),
     token: term(),
     updated_at: term()
   }}
  | {:error, Ecto.Changeset.t()}

Revokes token with refresh_token equal to previous_refresh_token and clears :previous_refresh_token attribute.

Examples

iex> revoke_previous_refresh_token(data)
{:ok, %OauthAccessToken{}}

iex> revoke_previous_refresh_token(invalid_data)
{:error, %Ecto.Changeset{}}
Link to this function validate_scopes(changeset) View Source
validate_scopes(Ecto.Changeset.t()) :: Ecto.Changeset.t()
Link to this function validate_scopes(changeset, server_scopes) View Source