Just for completness, before what I did to fix this was to create the graphql mutation by hand like this:
field :password_reset_with_password, type: :logged_user_output do
arg :input, non_null(:password_reset_with_password_input)
resolve fn _, %{input: args}, _ ->
strategy = AshAuthentication.Info.strategy!(User, :password)
args = args |> Enum.map(fn {k, v} -> {Atom.to_string(k), v} end) |> Enum.into(%{})
case AshAuthentication.Strategy.Password.Actions.reset(strategy, args, []) do
{:ok, user} ->
{:ok, %{user: user, token: user.__metadata__.token}}
{:error, %{errors: errors}} ->
errors = Enum.map(errors, &AshGraphql.Error.to_error/1)
{:ok, %{errors: errors}}
{:error, %AshAuthentication.Errors.InvalidToken{}} ->
{:ok, %{errors: [%{code: "invalid_token"}]}}
end
end
end
In this case I’m using AshAuthentication.Strategy.Password.Actions.reset instead of the password_reset_with_password action. But I want to remove this code and just use AshGraphql + AshAuthentication directly in my resource.






















