Module: ActiveModel::SecurePassword::InstanceMethodsOnActivation

Defined in:
activemodel/lib/active_model/secure_password.rb

Instance Method Summary collapse

Instance Method Details

#authenticate(unencrypted_password) ⇒ Object

Returns self if the password is correct, otherwise false.

class User < ActiveRecord::Base
  has_secure_password validations: false
end

user = User.new(name: 'david', password: 'mUc3m00RsqyRe')
user.save
user.authenticate('notright')      # => false
user.authenticate('mUc3m00RsqyRe') # => user

85
86
87
# File 'activemodel/lib/active_model/secure_password.rb', line 85

def authenticate(unencrypted_password)
  BCrypt::Password.new(password_digest) == unencrypted_password && self
end

#password=(unencrypted_password) ⇒ Object

Encrypts the password into the password_digest attribute, only if the new password is not blank.

class User < ActiveRecord::Base
  has_secure_password validations: false
end

user = User.new
user.password = nil
user.password_digest # => nil
user.password = 'mUc3m00RsqyRe'
user.password_digest # => "$2a$10$4LEA7r4YmNHtvlAvHhsYAeZmk/xeUVtMTYqwIvYY76EW5GUqDiP4."

101
102
103
104
105
106
107
# File 'activemodel/lib/active_model/secure_password.rb', line 101

def password=(unencrypted_password)
  unless unencrypted_password.blank?
    @password = unencrypted_password
    cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine::DEFAULT_COST
    self.password_digest = BCrypt::Password.create(unencrypted_password, cost: cost)
  end
end

#password_confirmation=(unencrypted_password) ⇒ Object


109
110
111
# File 'activemodel/lib/active_model/secure_password.rb', line 109

def password_confirmation=(unencrypted_password)
  @password_confirmation = unencrypted_password
end