Проверка пользователя и пароля в Ruby on Rails - PullRequest
0 голосов
/ 14 мая 2018

У меня есть особые требования для проверки регистрации имени пользователя и пароля с использованием только bcrypt (без устройства!)

В настоящее время у меня работает:

validates :username,
          presence: true,
          length: { minimum: 2, maximum: 15 },
          uniqueness: true

validates :password, 
          presence: true,
          length: { minimum: 10 },

Мне нужно:

  • Имя пользователя:
    1. Может содержать только буквы, цифры, тире и подчеркивания
  • Пароль:
    1. Должен содержать хотя бы одну заглавную букву, один специальный символ, одна цифра и одна строчная буква

1 Ответ

0 голосов
/ 14 мая 2018

1 . Для первой необходимости вы можете добавить это к своему имени пользователя validates:

format: { with: /\A[\w-]+\z/, message: "your format requirements" }

2 . Для вашей второй необходимости я не нашел регулярного выражения для этого, вы можете попробовать добавить настраиваемую проверку.

Сначала добавьте этот метод проверки в вашу модель:

def check_password_format
  regexps = {" must contain at least one lowercase letter" => /[a-z]+/, 
             " must contain at least one uppercase letter" => /[A-Z]+/, 
             " must contain at least one digit" => /\d+/, 
             " must contain at least one special character" => /[^A-Za-z0-9]+/}
  regexps.each do |rule, reg|
    errors.add(:password, rule) unless password.match(reg)
  end
end

Затем напишите эту строку в вашей модели:

validate :check_password_format

Таким образом, на странице формы через атрибут .errors объекта вы можете отобразить пользователям требования к формату, которые они пропустили.

...