Correct validators so that existing error messages would look correct (#3668)
This commit is contained in:
		
							parent
							
								
									1a065fb146
								
							
						
					
					
						commit
						cdff1da901
					
				|  | @ -57,7 +57,8 @@ class Account < ApplicationRecord | |||
|   validates :username, uniqueness: { scope: :domain, case_sensitive: true }, if: -> { !local? && username_changed? } | ||||
| 
 | ||||
|   # Local user validations | ||||
|   validates :username, format: { with: /\A[a-z0-9_]+\z/i }, uniqueness: { scope: :domain, case_sensitive: false }, length: { maximum: 30 }, unreserved: true, if: -> { local? && username_changed? } | ||||
|   validates :username, format: { with: /\A[a-z0-9_]+\z/i }, uniqueness: { scope: :domain, case_sensitive: false }, length: { maximum: 30 }, if: -> { local? && username_changed? } | ||||
|   validates_with UnreservedUsernameValidator, if: -> { local? && username_changed? } | ||||
|   validates :display_name, length: { maximum: 30 }, if: -> { local? && display_name_changed? } | ||||
|   validates :note, length: { maximum: 160 }, if: -> { local? && note_changed? } | ||||
| 
 | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ class User < ApplicationRecord | |||
|   accepts_nested_attributes_for :account | ||||
| 
 | ||||
|   validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale? | ||||
|   validates :email, email: true, if: :email_changed? | ||||
|   validates_with BlacklistedEmailValidator, if: :email_changed? | ||||
| 
 | ||||
|   scope :recent,    -> { order(id: :desc) } | ||||
|   scope :admins,    -> { where(admin: true) } | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class EmailValidator < ActiveModel::EachValidator | ||||
|   def validate_each(record, attribute, value) | ||||
|     record.errors.add(attribute, I18n.t('users.invalid_email')) if blocked_email?(value) | ||||
| class BlacklistedEmailValidator < ActiveModel::Validator | ||||
|   def validate(user) | ||||
|     user.errors.add(:email, I18n.t('users.invalid_email')) if blocked_email?(user.email) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
|  | @ -15,7 +15,7 @@ class EmailValidator < ActiveModel::EachValidator | |||
|     return false if Rails.configuration.x.email_domains_blacklist.blank? | ||||
| 
 | ||||
|     domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.') | ||||
|     regexp = Regexp.new("@(.+\\.)?(#{domains})", true) | ||||
|     regexp  = Regexp.new("@(.+\\.)?(#{domains})", true) | ||||
| 
 | ||||
|     value =~ regexp | ||||
|   end | ||||
|  | @ -24,7 +24,7 @@ class EmailValidator < ActiveModel::EachValidator | |||
|     return false if Rails.configuration.x.email_domains_whitelist.blank? | ||||
| 
 | ||||
|     domains = Rails.configuration.x.email_domains_whitelist.gsub('.', '\.') | ||||
|     regexp = Regexp.new("@(.+\\.)?(#{domains})$", true) | ||||
|     regexp  = Regexp.new("@(.+\\.)?(#{domains})$", true) | ||||
| 
 | ||||
|     value !~ regexp | ||||
|   end | ||||
|  | @ -0,0 +1,15 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class UnreservedUsernameValidator < ActiveModel::Validator | ||||
|   def validate(account) | ||||
|     return if account.username.nil? | ||||
|     account.errors.add(:username, I18n.t('accounts.reserved_username')) if reserved_username?(account.username) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def reserved_username?(value) | ||||
|     return false unless Setting.reserved_usernames | ||||
|     Setting.reserved_usernames.include?(value.downcase) | ||||
|   end | ||||
| end | ||||
|  | @ -1,15 +0,0 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class UnreservedValidator < ActiveModel::EachValidator | ||||
|   def validate_each(record, attribute, value) | ||||
|     return if value.nil? | ||||
|     record.errors.add(attribute, I18n.t('accounts.reserved_username')) if reserved_username?(value) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def reserved_username?(value) | ||||
|     return false unless Setting.reserved_usernames | ||||
|     Setting.reserved_usernames.include?(value.downcase) | ||||
|   end | ||||
| end | ||||
		Loading…
	
		Reference in New Issue