module Sorcery::Model::Submodules::ResetPassword::InstanceMethods

Public Instance Methods

change_password(new_password, raise_on_failure: false) click to toggle source

Clears token and tries to update the new password for the user.

# File lib/sorcery/model/submodules/reset_password.rb, line 127
def change_password(new_password, raise_on_failure: false)
  clear_reset_password_token
  send(:"#{sorcery_config.password_attribute_name}=", new_password)
  sorcery_adapter.save raise_on_failure: raise_on_failure
end
change_password!(new_password) click to toggle source
# File lib/sorcery/model/submodules/reset_password.rb, line 133
def change_password!(new_password)
  change_password(new_password, raise_on_failure: true)
end
deliver_reset_password_instructions!() click to toggle source

Generates a reset code with expiration and sends an email to the user.

# File lib/sorcery/model/submodules/reset_password.rb, line 99
def deliver_reset_password_instructions!
  mail = false
  config = sorcery_config
  # hammering protection
  return false if config.reset_password_time_between_emails.present? && send(config.reset_password_email_sent_at_attribute_name) && send(config.reset_password_email_sent_at_attribute_name) > config.reset_password_time_between_emails.seconds.ago.utc

  self.class.sorcery_adapter.transaction do
    generate_reset_password_token!
    mail = send_reset_password_email! unless config.reset_password_mailer_disabled
  end
  mail
end
generate_reset_password_token!() click to toggle source

Generates a reset code with expiration

# File lib/sorcery/model/submodules/reset_password.rb, line 89
def generate_reset_password_token!
  config = sorcery_config
  attributes = { config.reset_password_token_attribute_name => TemporaryToken.generate_random_token,
                 config.reset_password_email_sent_at_attribute_name => Time.now.in_time_zone }
  attributes[config.reset_password_token_expires_at_attribute_name] = Time.now.in_time_zone + config.reset_password_expiration_period if config.reset_password_expiration_period

  sorcery_adapter.update_attributes(attributes)
end
increment_password_reset_page_access_counter() click to toggle source

Increment access_count_to_reset_password_page attribute. For example, access_count_to_reset_password_page attribute is over 1, which means the user doesn't have a right to access.

# File lib/sorcery/model/submodules/reset_password.rb, line 115
def increment_password_reset_page_access_counter
  sorcery_adapter.increment(sorcery_config.reset_password_page_access_count_attribute_name)
end
reset_password_reset_page_access_counter() click to toggle source

Reset access_count_to_reset_password_page attribute into 0. This is expected to be used after sending an instruction email.

# File lib/sorcery/model/submodules/reset_password.rb, line 121
def reset_password_reset_page_access_counter
  send(:"#{sorcery_config.reset_password_page_access_count_attribute_name}=", 0)
  sorcery_adapter.save
end

Protected Instance Methods

clear_reset_password_token() click to toggle source

Clears the token.

# File lib/sorcery/model/submodules/reset_password.rb, line 144
def clear_reset_password_token
  config = sorcery_config
  send(:"#{config.reset_password_token_attribute_name}=", nil)
  send(:"#{config.reset_password_token_expires_at_attribute_name}=", nil) if config.reset_password_expiration_period
end
send_reset_password_email!() click to toggle source
# File lib/sorcery/model/submodules/reset_password.rb, line 139
def send_reset_password_email!
  generic_send_email(:reset_password_email_method_name, :reset_password_mailer)
end