# 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