confirm_account.rb 1.1 KB

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