sign_up.rb 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # frozen_string_literal: true
  2. module Mutations
  3. module User
  4. class SignUp < Mutations::BaseMutation
  5. # include ::ControllerMethods
  6. argument :username, String, required: true
  7. argument :email, String, required: true
  8. argument :password, String, required: true
  9. argument :password_confirmation, String, required: true
  10. argument :confirm_success_url, String, required: false
  11. field :user, Types::UserType, null: false
  12. def resolve(confirm_success_url: nil, **attrs)
  13. user = ::User.new(provider: :email, **attrs)
  14. raise_user_error('failed to create user') if user.blank?
  15. redirect_url = confirm_success_url \
  16. || DeviseTokenAuth.default_confirm_success_url
  17. if blacklisted_redirect_url?(redirect_url)
  18. raise_user_error('redirect url is not allowed')
  19. end
  20. # user.skip_confirmation_notification!
  21. if user.save
  22. unless user.confirmed?
  23. # user.send_confirmation_instructions(
  24. # redirect_url: confirm_success_url,
  25. # template_path: ['mailer/user'],
  26. # )
  27. end
  28. set_auth_headers(user) if user.active_for_authentication?
  29. {user: user}
  30. else
  31. # clean_up_passwords(user)
  32. raise_user_error_list(
  33. 'registration failed',
  34. errors: user.errors.full_messages,
  35. )
  36. end
  37. end
  38. private
  39. def provider
  40. :email
  41. end
  42. def clean_up_passwords(user)
  43. # controller.send(:clean_up_passwords, user)
  44. end
  45. end
  46. end
  47. end