class GraphqlDevise::Mutations::SignUp

Public Instance Methods

resolve(confirm_success_url: nil, **attrs) { |resource| ... } click to toggle source
# File lib/graphql_devise/mutations/sign_up.rb, line 16
def resolve(confirm_success_url: nil, **attrs)
  resource = build_resource(attrs.merge(provider: provider))
  raise_user_error(I18n.t('graphql_devise.resource_build_failed')) if resource.blank?

  redirect_url = confirm_success_url || DeviseTokenAuth.default_confirm_success_url
  if confirmable_enabled? && redirect_url.blank?
    raise_user_error(I18n.t('graphql_devise.registrations.missing_confirm_redirect_url'))
  end

  check_redirect_url_whitelist!(redirect_url)

  resource.skip_confirmation_notification! if resource.respond_to?(:skip_confirmation_notification!)

  if resource.save
    yield resource if block_given?

    unless resource.confirmed?
      resource.send_confirmation_instructions(
        redirect_url:  redirect_url,
        template_path: ['graphql_devise/mailer'],
        schema_url:    controller.full_url_without_params
      )
    end

    response_payload = { authenticatable: resource }

    response_payload[:credentials] = set_auth_headers(resource) if resource.active_for_authentication?

    response_payload
  else
    resource.try(:clean_up_passwords)
    raise_user_error_list(
      I18n.t('graphql_devise.registration_failed'),
      errors: resource.errors.full_messages
    )
  end
end

Private Instance Methods

build_resource(attrs) click to toggle source
# File lib/graphql_devise/mutations/sign_up.rb, line 56
def build_resource(attrs)
  resource_class.new(attrs)
end