class GraphqlDevise::Mutations::ResendConfirmation

Public Instance Methods

resolve(email:, redirect_url:) { |resource| ... } click to toggle source
# File lib/graphql_devise/mutations/resend_confirmation.rb, line 11
def resolve(email:, redirect_url:)
  check_redirect_url_whitelist!(redirect_url)

  resource = find_confirmable_resource(email)

  if resource
    yield resource if block_given?

    if resource.confirmed? && !resource.pending_reconfirmation?
      raise_user_error(I18n.t('graphql_devise.confirmations.already_confirmed'))
    end

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

    { message: I18n.t('graphql_devise.confirmations.send_instructions', email: email) }
  else
    raise_user_error(I18n.t('graphql_devise.confirmations.user_not_found', email: email))
  end
end

Private Instance Methods

find_confirmable_resource(email) click to toggle source
# File lib/graphql_devise/mutations/resend_confirmation.rb, line 37
def find_confirmable_resource(email)
  email_insensitive = get_case_insensitive_field(:email, email)
  resource = find_resource(:unconfirmed_email, email_insensitive) if resource_class.reconfirmable
  resource ||= find_resource(:email, email_insensitive)
  resource
end