From c8fcbde2af61677b9f1c7305c76e33c3e3c223ab Mon Sep 17 00:00:00 2001 From: aditya-kapoor Date: Mon, 5 May 2014 13:41:08 +0530 Subject: [PATCH] split send_reset_password_instructions into two parts for better hooking --- lib/devise/models/recoverable.rb | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/devise/models/recoverable.rb b/lib/devise/models/recoverable.rb index d48d0dd7..94ab1ff3 100644 --- a/lib/devise/models/recoverable.rb +++ b/lib/devise/models/recoverable.rb @@ -45,14 +45,10 @@ module Devise # Resets reset password token and send reset password instructions by email. # Returns the token sent in the e-mail. def send_reset_password_instructions - raw, enc = Devise.token_generator.generate(self.class, :reset_password_token) + token = set_reset_password_token + send_reset_password_instruction_notification(token) - self.reset_password_token = enc - self.reset_password_sent_at = Time.now.utc - self.save(validate: false) - - send_devise_notification(:reset_password_instructions, raw, {}) - raw + token end # Checks if the reset password token sent is within the limit time. @@ -90,6 +86,20 @@ module Devise def after_password_reset end + def set_reset_password_token + raw, enc = Devise.token_generator.generate(self.class, :reset_password_token) + + self.reset_password_token = enc + self.save(validate: false) + raw + end + + def send_reset_password_instruction_notification(token) + self.reset_password_sent_at = Time.now.utc + self.save(validate: false) + send_devise_notification(:reset_password_instructions, token, {}) + end + module ClassMethods # Attempt to find a user by password reset token. If a user is found, return it # If a user is not found, return nil