module JumpIn::PasswordReset
Public Instance Methods
generate_unique_token_for(user:)
click to toggle source
# File lib/jump_in/password_reset.rb, line 21 def generate_unique_token_for(user:) loop do token = generate_token break token if token_uniq?(user: user, token: token) end end
password_reset_valid?(password_reset_token:)
click to toggle source
RECEIVING TOKEN
# File lib/jump_in/password_reset.rb, line 37 def password_reset_valid?(password_reset_token:) decode_time(password_reset_token) > Time.now - JumpIn.conf.expiration_time end
set_password_reset_for(user:, token: nil)
click to toggle source
CREATING TOKEN
# File lib/jump_in/password_reset.rb, line 8 def set_password_reset_for(user:, token: nil) if token_uniq_or_empty?(user: user, token: token) set_token(user: user, token: token) else false end end
set_token(user:, token: nil)
click to toggle source
# File lib/jump_in/password_reset.rb, line 16 def set_token(user:, token: nil) token ||= generate_unique_token_for(user: user) user.update_attribute(:password_reset_token, token) end
token_correct?(user_token:, received_token:)
click to toggle source
# File lib/jump_in/password_reset.rb, line 50 def token_correct?(user_token:, received_token:) user_token == received_token end
token_uniq?(user:, token:)
click to toggle source
# File lib/jump_in/password_reset.rb, line 32 def token_uniq?(user:, token:) !user.class.where(password_reset_token: token).exists? end
token_uniq_or_empty?(user:, token:)
click to toggle source
# File lib/jump_in/password_reset.rb, line 28 def token_uniq_or_empty?(user:, token:) (token && token_uniq?(user: user, token: token)) || token.nil? end
update_password_for(user:, password:, password_confirmation:, password_reset_token:)
click to toggle source
# File lib/jump_in/password_reset.rb, line 41 def update_password_for(user:, password:, password_confirmation:, password_reset_token:) return false unless token_correct?(user_token: user.password_reset_token, received_token: password_reset_token) user.update_attributes(password: password, password_confirmation: password_confirmation, password_reset_token: nil) end