Class: DeviseSecurity::PasswordComplexityValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- DeviseSecurity::PasswordComplexityValidator
- Defined in:
- lib/devise-security/validators/password_complexity_validator.rb
Overview
Password complexity validator Options:
-
digit: minimum number of digits in the validated string
-
digits: minimum number of digits in the validated string
-
lower: minimum number of lower-case letters in the validated string
-
symbol: minimum number of punctuation characters or symbols in the validated string
-
symbols: minimum number of punctuation characters or symbols in the validated string
-
upper: minimum number of upper-case letters in the validated string
Constant Summary collapse
- PATTERNS =
{ digit: /\p{Digit}/, digits: /\p{Digit}/, lower: /\p{Lower}/, symbol: /\p{Punct}|\p{S}/, symbols: /\p{Punct}|\p{S}/, upper: /\p{Upper}/ }.freeze
Instance Method Summary collapse
Instance Method Details
#active_pattern_keys ⇒ Object
32 33 34 |
# File 'lib/devise-security/validators/password_complexity_validator.rb', line 32 def active_pattern_keys .keys & PATTERNS.keys end |
#validate_each(record, attribute, value) ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/devise-security/validators/password_complexity_validator.rb', line 21 def validate_each(record, attribute, value) active_pattern_keys.each do |key| minimum = [0, [key].to_i].max pattern = Regexp.new PATTERNS[key] unless (value || '').scan(pattern).size >= minimum record.errors.add attribute, :"password_complexity.#{key}", count: minimum end end end |