Class: ActiveModel::PasswordReset

Inherits:
Object
  • Object
show all
Includes:
Model
Defined in:
lib/active_model/password_reset.rb,
lib/active_model/password_reset/error.rb,
lib/active_model/password_reset/version.rb

Defined Under Namespace

Classes: EmailInvalid, Error, PasswordChanged, TokenExpired, TokenInvalid

Constant Summary collapse

EXPIRATION_TIME =

24 hours

60 * 60 * 24
VERSION =
"1.0.9"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#emailObject

Returns the value of attribute email.



11
12
13
# File 'lib/active_model/password_reset.rb', line 11

def email
  @email
end

#userObject



23
24
25
26
# File 'lib/active_model/password_reset.rb', line 23

def user
  return @user if defined?(@user)
  @user = User.find_by(email: email)
end

Class Method Details

.find(token) ⇒ Object

Raises:



35
36
37
38
39
40
41
42
# File 'lib/active_model/password_reset.rb', line 35

def self.find(token)
  email, digest, expires_at = verify_token(token)
  raise TokenExpired if Time.now.to_i > expires_at.to_i
  new(email: email).tap do |password_reset|
    raise EmailInvalid if password_reset.invalid?
    raise PasswordChanged if password_reset.send(:digest) != digest
  end
end

Instance Method Details

#tokenObject



28
29
30
31
32
33
# File 'lib/active_model/password_reset.rb', line 28

def token
  email = user.email
  digest = Digest::MD5.digest(user.password_digest)
  expires_at = Time.now.to_i + EXPIRATION_TIME
  self.class.generate_token([email, digest, expires_at])
end