Class: UserPasswordValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/validators/user_password_validator.rb

Instance Method Summary collapse

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/validators/user_password_validator.rb', line 4

def validate_each(record, attribute, value)
  return unless record.password_validation_required?
  user = record.user

  if value.nil?
    record.errors.add(attribute, :blank)
  elsif value.length < SiteSetting.min_admin_password_length &&
        (user.admin? || is_developer?(user.email))
    record.errors.add(attribute, :too_short, count: SiteSetting.min_admin_password_length)
  elsif value.length < SiteSetting.min_password_length
    record.errors.add(attribute, :too_short, count: SiteSetting.min_password_length)
  elsif user.username.present? && value == user.username
    record.errors.add(attribute, :same_as_username)
  elsif user.name.present? && value == user.name
    record.errors.add(attribute, :same_as_name)
  elsif user.email.present? && value == user.email
    record.errors.add(attribute, :same_as_email)
  elsif record.password_hash_changed? && record.confirm_password?(value)
    record.errors.add(attribute, :same_as_current)
  elsif SiteSetting.block_common_passwords && CommonPasswords.common_password?(value)
    record.errors.add(attribute, :common)
  elsif value.chars.uniq.length < SiteSetting.password_unique_characters
    record.errors.add(attribute, :unique_characters)
  end
end