mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 20:41:24 +08:00
FIX: Improve group name validation (#31315)
This commit improves a few aspects regarding group name validation: - `min_username_length` and `max_username_length` are validated with the shortest and longest names of users and groups - skip validation of the group name when the group is an automatic one
This commit is contained in:
@ -12,9 +12,16 @@ class MaxUsernameLengthValidator
|
||||
@max_range_violation = true
|
||||
return false
|
||||
end
|
||||
return false if value < SiteSetting.min_username_length
|
||||
|
||||
if value < SiteSetting.min_username_length
|
||||
@min_value_violation = true
|
||||
return false
|
||||
end
|
||||
|
||||
@username = User.where("length(username) > ?", value).pick(:username)
|
||||
@username.blank?
|
||||
@group_name = Group.where(automatic: false).where("length(name) > ?", value).pick(:name)
|
||||
|
||||
@username.blank? && @group_name.blank?
|
||||
end
|
||||
|
||||
def error_message
|
||||
@ -24,10 +31,12 @@ class MaxUsernameLengthValidator
|
||||
min: MAX_USERNAME_LENGTH_RANGE.begin,
|
||||
max: MAX_USERNAME_LENGTH_RANGE.end,
|
||||
)
|
||||
elsif @username.blank?
|
||||
elsif @min_value_violation
|
||||
I18n.t("site_settings.errors.max_username_length_range")
|
||||
else
|
||||
elsif @username.present?
|
||||
I18n.t("site_settings.errors.max_username_length_exists", username: @username)
|
||||
elsif @group_name.present?
|
||||
I18n.t("site_settings.errors.max_group_name_length_exists", group_name: @group_name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -12,9 +12,16 @@ class MinUsernameLengthValidator
|
||||
@min_range_violation = true
|
||||
return false
|
||||
end
|
||||
return false if value > SiteSetting.max_username_length
|
||||
|
||||
if value > SiteSetting.max_username_length
|
||||
@max_value_violation = true
|
||||
return false
|
||||
end
|
||||
|
||||
@username = User.where("length(username) < ?", value).pick(:username)
|
||||
@username.blank?
|
||||
@group_name = Group.where(automatic: false).where("length(name) < ?", value).pick(:name)
|
||||
|
||||
@username.blank? && @group_name.blank?
|
||||
end
|
||||
|
||||
def error_message
|
||||
@ -24,10 +31,12 @@ class MinUsernameLengthValidator
|
||||
min: MIN_USERNAME_LENGTH_RANGE.begin,
|
||||
max: MIN_USERNAME_LENGTH_RANGE.end,
|
||||
)
|
||||
elsif @username.blank?
|
||||
elsif @max_value_violation
|
||||
I18n.t("site_settings.errors.min_username_length_range")
|
||||
else
|
||||
elsif @username.present?
|
||||
I18n.t("site_settings.errors.min_username_length_exists", username: @username)
|
||||
elsif @group_name.present?
|
||||
I18n.t("site_settings.errors.min_group_name_length_exists", group_name: @group_name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user