mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
allow regex options on username site settings
This commit is contained in:
17
lib/validators/regex_setting_validation.rb
Normal file
17
lib/validators/regex_setting_validation.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
module RegexSettingValidation
|
||||
|
||||
def initialize_regex_opts(opts = {})
|
||||
@regex = Regexp.new(opts[:regex]) if opts[:regex]
|
||||
@regex_error = opts[:regex_error] || 'site_settings.errors.regex_mismatch'
|
||||
end
|
||||
|
||||
def regex_match?(val)
|
||||
if @regex && !(val =~ @regex)
|
||||
@regex_fail = true
|
||||
return false
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,8 +1,10 @@
|
||||
class StringSettingValidator
|
||||
|
||||
include RegexSettingValidation
|
||||
|
||||
def initialize(opts = {})
|
||||
@opts = opts
|
||||
@regex = Regexp.new(opts[:regex]) if opts[:regex]
|
||||
@regex_error = opts[:regex_error] || 'site_settings.errors.regex_mismatch'
|
||||
initialize_regex_opts(opts)
|
||||
end
|
||||
|
||||
def valid_value?(val)
|
||||
@@ -13,12 +15,7 @@ class StringSettingValidator
|
||||
return false
|
||||
end
|
||||
|
||||
if @regex && !(val =~ @regex)
|
||||
@regex_fail = true
|
||||
return false
|
||||
end
|
||||
|
||||
true
|
||||
regex_match?(val)
|
||||
end
|
||||
|
||||
def error_message
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
class UsernameSettingValidator
|
||||
|
||||
include RegexSettingValidation
|
||||
|
||||
def initialize(opts = {})
|
||||
@opts = opts
|
||||
initialize_regex_opts(opts)
|
||||
end
|
||||
|
||||
def valid_value?(val)
|
||||
!val.present? || User.where(username: val).exists?
|
||||
!val.present? || (User.where(username: val).exists? && regex_match?(val))
|
||||
end
|
||||
|
||||
def error_message
|
||||
I18n.t('site_settings.errors.invalid_username')
|
||||
if @regex_fail
|
||||
I18n.t(@regex_error)
|
||||
else
|
||||
I18n.t('site_settings.errors.invalid_username')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user