Log out everywhere support.
Sometimes it's necessary to be able to invalidate all of a user's sessions with a single action. This add-on provides this functionality.
In order to use this feature the following features must be enabled:
- Tokens must be enabled.
- The
authentication.tokens.store_all_tokens?option is enabled. - The
authentication.tokens.require_token_presence_for_authentication?option is enabled. - For the
apply_on_password_change?option, at least one password strategy must be enabled.
defmodule MyApp.Accounts.User do
use Ash.Resource,
extensions: [AshAuthentication],
domain: MyApp.Accounts
authentication do
tokens do
enabled? true
store_all_tokens? true
require_token_presence_for_authentication? true
end
add_ons do
log_out_everywhere do
apply_on_password_change? true
end
endBy default the add-on will add a log_out_everywhere action which reverts all
the existing non-expired tokens for the user in question.
iex> strategy = Info.strategy!(Example.User, :log_out_everywhere)
...> {:ok, user} = Strategy.action(strategy, :log_out_everywhere, %{"user_id" => user_id()})
...> user.id == user_id()
true
log_out_everywhere name \\ :log_out_everywhereLog out everywhere add-on
| Name | Type | Default | Docs |
|---|---|---|---|
name{: #authentication-add_ons-log_out_everywhere-name .spark-required} |
atom |
Uniquely identifies the add-on |
| Name | Type | Default | Docs |
|---|---|---|---|
action_name{: #authentication-add_ons-log_out_everywhere-action_name } |
atom |
:log_out_everywhere |
The name of the action to generate. |
argument_name{: #authentication-add_ons-log_out_everywhere-argument_name } |
atom |
:user |
The name of the user argument to the :log_out_everywhere action. |
include_purposes{: #authentication-add_ons-log_out_everywhere-include_purposes } |
list(String.t) |
Limit the list of token purposes for which tokens will be revoked to those in this list, except those in exclude_token_purposes. |
|
exclude_purposes{: #authentication-add_ons-log_out_everywhere-exclude_purposes } |
list(String.t) |
["revocation"] |
Don't revoke tokens with these purposes when logging a user out everywhere. |
apply_on_password_change?{: #authentication-add_ons-log_out_everywhere-apply_on_password_change? } |
boolean |
false |
Automatically log out all active sessions whenever a password is changed. |
Target: AshAuthentication.AddOn.LogOutEverywhere