sign_up.rb 1.5 KB

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