adk_credential_store behaviour (erlang_adk v0.7.0)

View Source

Behaviour and shared types for credential stores.

A credential reference is an opaque, random capability. Stores must also verify the principal and provider scope before returning a credential.

Summary

Types

credential/0

-type credential() :: adk_auth_provider:credential().

credential_ref/0

-opaque credential_ref()

error_reason/0

-type error_reason() ::
          invalid_scope | invalid_credential | not_found | conflict | capacity_reached | unavailable.

handle/0

-type handle() :: pid() | atom().

principal/0

-type principal() :: binary() | atom().

provider_id/0

-type provider_id() :: binary() | atom().

Callbacks

compare_and_swap/6

-callback compare_and_swap(Handle :: handle(),
                           Principal :: principal(),
                           Provider :: provider_id(),
                           Ref :: credential_ref(),
                           Expected :: credential(),
                           Replacement :: credential()) ->
                              ok | {error, error_reason()}.

delete/4

-callback delete(Handle :: handle(),
                 Principal :: principal(),
                 Provider :: provider_id(),
                 Ref :: credential_ref()) ->
                    ok | {error, error_reason()}.

fetch/4

-callback fetch(Handle :: handle(),
                Principal :: principal(),
                Provider :: provider_id(),
                Ref :: credential_ref()) ->
                   {ok, credential()} | {error, error_reason()}.

put/4

-callback put(Handle :: handle(),
              Principal :: principal(),
              Provider :: provider_id(),
              Credential :: credential()) ->
                 {ok, credential_ref()} | {error, error_reason()}.

Functions

is_ref(_)

-spec is_ref(term()) -> boolean().