Class: MaxUsernameLengthValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/validators/max_username_length_validator.rb

Constant Summary collapse

MAX_USERNAME_LENGTH_RANGE =
8..60

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ MaxUsernameLengthValidator

Returns a new instance of MaxUsernameLengthValidator.



6
7
8
# File 'lib/validators/max_username_length_validator.rb', line 6

def initialize(opts = {})
  @opts = opts
end

Instance Method Details

#error_messageObject



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/validators/max_username_length_validator.rb', line 20

def error_message
  if @max_range_violation
    I18n.t(
      "site_settings.errors.invalid_integer_min_max",
      min: MAX_USERNAME_LENGTH_RANGE.begin,
      max: MAX_USERNAME_LENGTH_RANGE.end,
    )
  elsif @username.blank?
    I18n.t("site_settings.errors.max_username_length_range")
  else
    I18n.t("site_settings.errors.max_username_length_exists", username: @username)
  end
end

#valid_value?(value) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
18
# File 'lib/validators/max_username_length_validator.rb', line 10

def valid_value?(value)
  if !MAX_USERNAME_LENGTH_RANGE.cover?(value)
    @max_range_violation = true
    return false
  end
  return false if value < SiteSetting.min_username_length
  @username = User.where("length(username) > ?", value).pick(:username)
  @username.blank?
end