class ReeValidator::ValidatePassword
def call(password, error = nil, **opts)
def call(password, error = nil, **opts) opts = DEFAULTS.merge(opts) if opts[:max_length] validate_length( password, error || PasswordErr.new( t( "validator.password.max_password_length", {number: opts[:max_length]}, default_by_locale: :en ) ), max: opts[:max_length] ) end validate_length( password, error || PasswordErr.new( t( "validator.password.min_password_length", {number: opts[:min_length]}, default_by_locale: :en ) ), min: opts[:min_length] ) if !password.match?(/\A(?=.*\d{#{opts[:digit_count]},})/x) error ||= PasswordErr.new( t( "validator.password.wrong_number_of_digits", {number: opts[:digit_count]}, default_by_locale: :en ) ) raise error end if !password.match?(/\A(?=.*[a-z]{#{opts[:lowercase_char_count]},})/x) error ||= PasswordErr.new( t( "validator.password.wrong_number_of_lowercase_chars", {number: opts[:lowercase_char_count]}, default_by_locale: :en ) ) raise error end if !password.match?(/\A(?=.*[A-Z]{#{opts[:uppercase_char_count]},})/x) error ||= PasswordErr.new( t( "validator.password.wrong_number_of_uppercase_chars", {number: opts[:uppercase_char_count]}, default_by_locale: :en ) ) raise error end if !password.match?(/\A(?=.*[[:^alnum:]]{#{opts[:special_symbol_count]},})/x) error ||= PasswordErr.new( t( "validator.password.wrong_number_of_special_symbols", {number: opts[:special_symbol_count]}, default_by_locale: :en ) ) raise error end true end