class ActiveModel::Validations::PasswordValidator

Constants

DEFAULT_ERROR_MESSAGES

Public Instance Methods

error_messages() click to toggle source
# File lib/active_model/validations/password_validator.rb, line 27
def error_messages
  @error_messages ||= DEFAULT_ERROR_MESSAGES
end
error_messages=(em) click to toggle source
# File lib/active_model/validations/password_validator.rb, line 31
def error_messages=(em)
  @error_messages = em
end
validate_each(record, attribute, value) click to toggle source
# File lib/active_model/validations/password_validator.rb, line 15
def validate_each(record, attribute, value)
  pc = NOBSPW::PasswordChecker.new password: record.send(attribute),
                                   email:    email_value(record),
                                   name:     name_value(record),
                                   username: username_value(record)

  pc.weak_password_reasons.each do |reason|
    record.errors[attribute] << get_message(reason)
  end
  pc.strong?
end

Private Instance Methods

email_value(record) click to toggle source
# File lib/active_model/validations/password_validator.rb, line 37
def email_value(record)
  if options.keys.include?(:email)
    return nil if options[:email].nil?
    return record.send(options[:email])
  end

  %i(email email_address).each do |f|
    return record.send(f) if record.respond_to?(f)
  end

  nil
end
get_message(reason) click to toggle source
# File lib/active_model/validations/password_validator.rb, line 80
def get_message(reason)
  I18n.t "password_validator.#{reason}", default: error_messages[reason] ||
                                                  error_messages[:fallback]
end
name_value(record) click to toggle source
# File lib/active_model/validations/password_validator.rb, line 63
def name_value(record)
  if options.keys.include?(:name)
    return nil if options[:name].nil?
    return record.send(options[:name])
  end

  %i(name full_name).each do |f|
    return record.send(f) if record.respond_to?(f)
  end

  if record.respond_to?(:first_name) && record.respond_to?(:last_name)
    return "#{record.send(:first_name)} #{record.send(:last_name)}"
  end

  nil
end
username_value(record) click to toggle source
# File lib/active_model/validations/password_validator.rb, line 50
def username_value(record)
  if options.keys.include?(:username)
    return nil if options[:username].nil?
    return record.send(options[:username])
  end

  %i(username user_name user screenname screen_name).each do |f|
    return record.send(f) if record.respond_to?(f)
  end

  nil
end