fix: respect identity_relationship_user_id_attribute on Strategy.OAuth2.IdentityChange

This commit is contained in:
quartz55 2023-02-25 16:33:58 +00:00 committed by James Harton
parent 6448bd7366
commit 333ca2e7c0

View file

@ -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