mirror of
https://github.com/team-alembic/ash_authentication.git
synced 2024-09-20 05:13:10 +12:00
docs: small documentation improvements.
This commit is contained in:
parent
7c71e1f219
commit
2a10e2da6a
4 changed files with 92 additions and 3 deletions
|
@ -90,3 +90,48 @@ The values for this configuration should be:
|
|||
* `client_secret` the client secret copied from the Auth0 settings page.
|
||||
* `site` - the "domain" value copied from the Auth0 settings page prefixed
|
||||
with `https://` (eg `https://dev-yu30yo5y4tg2hg0y.us.auth0.com`).
|
||||
|
||||
Lastly, we need to add a register action to your user resource. This is defined
|
||||
as an upsert so that it can register new users, or update information for
|
||||
returning users. The default name of the action is `register_with_` followed by
|
||||
the strategy name. In our case that is `register_with_auth0`.
|
||||
|
||||
The register action takes two arguments, `user_info` and the `oauth_tokens`.
|
||||
- `user_info` contains the [`GET /userinfo` response from
|
||||
Auth0](https://auth0.com/docs/api/authentication#get-user-info) which you
|
||||
can use to populate your user attributes as needed.
|
||||
- `oauth_tokens` contains the [`POST /oauth/token` response from
|
||||
Auth0](https://auth0.com/docs/api/authentication#get-token) - you may want
|
||||
to store these if you intend to call the Auth0 API on behalf of the user.
|
||||
|
||||
```elixir
|
||||
defmodule MyApp.Accounts.User do
|
||||
use Ash.Resource, extensions: [AshAuthentication]
|
||||
|
||||
# ...
|
||||
|
||||
actions do
|
||||
create :register_with_auth0 do
|
||||
argument :user_info, :map, allow_nil?: false
|
||||
argument :oauth_tokens, :map, allow_nil?: false
|
||||
upsert? true
|
||||
upsert_identity :email
|
||||
|
||||
# Required if you have token generation enabled.
|
||||
change AshAuthentication.GenerateTokenChange
|
||||
|
||||
# Required if you have the `identity_resource` configuration enabled.
|
||||
change AshAuthentication.Strategy.OAuth2.IdentityChange
|
||||
|
||||
change fn changeset, _ ->
|
||||
user_info = Ash.Changeset.get_argument(changeset, :user_info)
|
||||
|
||||
Ash.Changeset.change_attributes(changeset, Map.take(user_info, ["email"]))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# ...
|
||||
|
||||
end
|
||||
```
|
||||
|
|
|
@ -84,3 +84,49 @@ The values for this configuration should be:
|
|||
* `redirect_uri` - the URL to the generated auth routes in your application
|
||||
(eg `http://localhost:4000/auth`).
|
||||
* `client_secret` the client secret copied from the GitHub settings page.
|
||||
|
||||
Lastly, we need to add a register action to your user resource. This is defined
|
||||
as an upsert so that it can register new users, or update information for
|
||||
returning users. The default name of the action is `register_with_` followed by
|
||||
the strategy name. In our case that is `register_with_github`.
|
||||
|
||||
The register action takes two arguments, `user_info` and the `oauth_tokens`.
|
||||
- `user_info` contains the [`GET /user` response from
|
||||
GitHub](https://docs.github.com/en/rest/users/users?apiVersion=2022-11-28#get-the-authenticated-user)
|
||||
which you can use to populate your user attributes as needed.
|
||||
- `oauth_tokens` contains the [`POST /login/oauth/access_token` response from
|
||||
GitHub](https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps#response)
|
||||
- you may want to store these if you intend to call the GitHub API on behalf
|
||||
of the user.
|
||||
|
||||
```elixir
|
||||
defmodule MyApp.Accounts.User do
|
||||
use Ash.Resource, extensions: [AshAuthentication]
|
||||
|
||||
# ...
|
||||
|
||||
actions do
|
||||
create :register_with_github do
|
||||
argument :user_info, :map, allow_nil?: false
|
||||
argument :oauth_tokens, :map, allow_nil?: false
|
||||
upsert? true
|
||||
upsert_identity :email
|
||||
|
||||
# Required if you have token generation enabled.
|
||||
change AshAuthentication.GenerateTokenChange
|
||||
|
||||
# Required if you have the `identity_resource` configuration enabled.
|
||||
change AshAuthentication.Strategy.OAuth2.IdentityChange
|
||||
|
||||
change fn changeset, _ ->
|
||||
user_info = Ash.Changeset.get_argument(changeset, :user_info)
|
||||
|
||||
Ash.Changeset.change_attributes(changeset, Map.take(user_info, ["email"]))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# ...
|
||||
|
||||
end
|
||||
```
|
||||
|
|
|
@ -97,8 +97,6 @@ auth_path * /auth/user/password/register MyAppWeb.AuthController {:use
|
|||
auth_path * /auth/user/password/sign_in MyAppWeb.AuthController {:user, :password, :sign_in}
|
||||
auth_path * /auth/user/password/reset_request MyAppWeb.AuthController {:user, :password, :reset_request}
|
||||
auth_path * /auth/user/password/reset MyAppWeb.AuthController {:user, :password, :reset}
|
||||
auth_path * /auth/user/auth0 MyAppWeb.AuthController {:user, :auth0, :request}
|
||||
auth_path * /auth/user/auth0/callback MyAppWeb.AuthController {:user, :auth0, :callback}
|
||||
auth_path GET /sign-in AshAuthentication.Phoenix.SignInLive :sign_in
|
||||
auth_path GET /sign-out MyAppWeb.AuthController :sign_out
|
||||
```
|
||||
|
|
|
@ -194,7 +194,7 @@ defmodule AshAuthentication.TokenResource do
|
|||
@doc """
|
||||
Revoke a token.
|
||||
|
||||
Extracts the JTI from the provided token and uses it to generate a revocationr
|
||||
Extracts the JTI from the provided token and uses it to generate a revocation
|
||||
record.
|
||||
"""
|
||||
@spec revoke(Resource.t(), String.t(), keyword) :: :ok | {:error, any}
|
||||
|
|
Loading…
Reference in a new issue