Я использую devise-security
драгоценный камень и предъявляю особые password_complexity
требования:
config.password_complexity = { digit: 1, lower: 1, upper: 1 }
Если вы используете этот код: Devise.friendly_token.first(password_length)
для генерации пароля, вы не всегда можете получить пароль, соответствующий вашей сложности.
Итак, я написал генератор паролей, который будет уважать ваш password_complexity
и сгенерирует случайный пароль жалобы:
class PasswordGenerator
include ActiveModel::Validations
validates :password, 'devise_security/password_complexity': Devise.password_complexity
attr_reader :password
def initialize
@password = Devise.friendly_token.first(Devise.password_length.first) until valid?
end
end
Вы можете использовать его следующим образом:
PasswordGenerator.new.password # "qHc165ku"