mirror of
https://github.com/discourse/discourse.git
synced 2025-09-06 10:50:21 +08:00
allow regex options on username site settings
This commit is contained in:
parent
c29334cf23
commit
ddbd1d5ab8
4 changed files with 53 additions and 10 deletions
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue