mirror of
https://github.com/team-alembic/ash_authentication.git
synced 2024-09-19 21:03:23 +12:00
fix: respect identity_relationship_user_id_attribute
on Strategy.OAuth2.IdentityChange
This commit is contained in:
parent
6448bd7366
commit
333ca2e7c0
1 changed files with 16 additions and 14 deletions
|
@ -29,20 +29,22 @@ defmodule AshAuthentication.Strategy.OAuth2.IdentityChange do
|
||||||
defp do_change(changeset, strategy) do
|
defp do_change(changeset, strategy) do
|
||||||
changeset
|
changeset
|
||||||
|> Changeset.after_action(fn changeset, user ->
|
|> Changeset.after_action(fn changeset, user ->
|
||||||
|
with {:ok, user_id_attribute_name} <-
|
||||||
|
strategy.identity_resource
|
||||||
|
|> UserIdentity.Info.user_identity_user_id_attribute_name(),
|
||||||
|
{:ok, _identity} <-
|
||||||
strategy.identity_resource
|
strategy.identity_resource
|
||||||
|> UserIdentity.Actions.upsert(%{
|
|> UserIdentity.Actions.upsert(%{
|
||||||
user_info: Changeset.get_argument(changeset, :user_info),
|
user_info: Changeset.get_argument(changeset, :user_info),
|
||||||
oauth_tokens: Changeset.get_argument(changeset, :oauth_tokens),
|
oauth_tokens: Changeset.get_argument(changeset, :oauth_tokens),
|
||||||
strategy: Strategy.name(strategy),
|
strategy: Strategy.name(strategy),
|
||||||
user_id: user.id
|
"#{user_id_attribute_name}": user.id
|
||||||
})
|
}) do
|
||||||
|> case do
|
|
||||||
{:ok, _identity} ->
|
|
||||||
user
|
user
|
||||||
|> changeset.api.load(strategy.identity_relationship_name)
|
|> changeset.api.load(strategy.identity_relationship_name)
|
||||||
|
else
|
||||||
{:error, reason} ->
|
:error -> :error
|
||||||
{:error, reason}
|
{:error, reason} -> {:error, reason}
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue