| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # frozen_string_literal: true
- module Mutations
- class User::SignUp < Mutations::BaseMutation
- include ControllerMethods
- argument :username, String, required: true
- argument :email, String, required: true
- argument :password, String, required: true
- argument :password_confirmation, String, required: true
- argument :confirm_success_url, String, required: false
- field :user, Types::UserType, null: false
- def resolve(confirm_success_url: nil, **attrs)
- user = ::User.new(provider: :email, **attrs)
- raise_user_error('failed to create user') if user.blank?
- redirect_url = confirm_success_url \
- || DeviseTokenAuth.default_confirm_success_url
- if blacklisted_redirect_url?(redirect_url)
- raise_user_error('redirect url is not allowed')
- end
- # user.skip_confirmation_notification!
- if user.save
- unless user.confirmed?
- # user.send_confirmation_instructions(
- # redirect_url: confirm_success_url,
- # template_path: ['mailer/user'],
- # )
- end
- set_auth_headers(user) if user.active_for_authentication?
- {user: user}
- else
- # clean_up_passwords(user)
- raise_user_error_list(
- 'registration failed',
- errors: user.errors.full_messages,
- )
- end
- end
- private
- def provider
- :email
- end
- def clean_up_passwords(user)
- # controller.send(:clean_up_passwords, user)
- end
- end
- end
|