mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
has_secure_password shouldn't validate password_digest. It should also take options to turn validations off.
This commit is contained in:
parent
ef9dd27223
commit
0e1e527654
1 changed files with 10 additions and 5 deletions
|
@ -6,8 +6,9 @@ module ActiveModel
|
||||||
# Adds methods to set and authenticate against a BCrypt password.
|
# Adds methods to set and authenticate against a BCrypt password.
|
||||||
# This mechanism requires you to have a password_digest attribute.
|
# This mechanism requires you to have a password_digest attribute.
|
||||||
#
|
#
|
||||||
# Validations for presence of password, confirmation of password (using
|
# Validations for presence of password on create, confirmation of password (using
|
||||||
# a "password_confirmation" attribute) are automatically added.
|
# a "password_confirmation" attribute) are automatically added.
|
||||||
|
# If you wish to turn off validations, pass 'validations: false' as an argument.
|
||||||
# You can add more validations by hand if need be.
|
# You can add more validations by hand if need be.
|
||||||
#
|
#
|
||||||
# You need to add bcrypt-ruby (~> 3.0.0) to Gemfile to use has_secure_password:
|
# You need to add bcrypt-ruby (~> 3.0.0) to Gemfile to use has_secure_password:
|
||||||
|
@ -31,16 +32,20 @@ module ActiveModel
|
||||||
# user.authenticate("mUc3m00RsqyRe") # => user
|
# user.authenticate("mUc3m00RsqyRe") # => user
|
||||||
# User.find_by_name("david").try(:authenticate, "notright") # => false
|
# User.find_by_name("david").try(:authenticate, "notright") # => false
|
||||||
# User.find_by_name("david").try(:authenticate, "mUc3m00RsqyRe") # => user
|
# User.find_by_name("david").try(:authenticate, "mUc3m00RsqyRe") # => user
|
||||||
def has_secure_password
|
def has_secure_password(options = {})
|
||||||
# Load bcrypt-ruby only when has_secure_password is used.
|
# Load bcrypt-ruby only when has_secure_password is used.
|
||||||
# This is to avoid ActiveModel (and by extension the entire framework) being dependent on a binary library.
|
# This is to avoid ActiveModel (and by extension the entire framework) being dependent on a binary library.
|
||||||
gem 'bcrypt-ruby', '~> 3.0.0'
|
gem 'bcrypt-ruby', '~> 3.0.0'
|
||||||
require 'bcrypt'
|
require 'bcrypt'
|
||||||
|
|
||||||
attr_reader :password
|
attr_reader :password
|
||||||
|
|
||||||
validates_confirmation_of :password
|
if options.fetch(:validations, true)
|
||||||
validates_presence_of :password_digest
|
validates_confirmation_of :password
|
||||||
|
validates_presence_of :password, :on => :create
|
||||||
|
end
|
||||||
|
|
||||||
|
before_create { raise "Password digest missing on new record" if password_digest.blank? }
|
||||||
|
|
||||||
include InstanceMethodsOnActivation
|
include InstanceMethodsOnActivation
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue