confirm_account.rb 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # frozen_string_literal: true
  2. module Mutations
  3. class User::ConfirmAccount < Mutations::BaseMutation
  4. include ControllerMethods
  5. field :user, Types::UserType, null: true
  6. argument :confirmation_token, String, required: true
  7. argument :redirect_url, String, required: true
  8. def resolve(confirmation_token:, redirect_url:)
  9. user = User.confirm_by_token(confirmation_token)
  10. if user.errors.empty?
  11. redirect_header_options = {account_confirmation_success: true}
  12. redirect_to_link = if controller.signed_in?(resource_name)
  13. signed_in_resource.build_auth_url(
  14. redirect_url,
  15. redirect_headers(
  16. client_and_token(controller.signed_in_resource.create_token),
  17. redirect_header_options,
  18. ),
  19. )
  20. else
  21. DeviseTokenAuth::Url.generate(redirect_url, redirect_header_options)
  22. end
  23. controller.redirect_to(redirect_to_link)
  24. {user: user}
  25. else
  26. raise_user_error('invalid confirmation token')
  27. end
  28. end
  29. end
  30. end