Change e-mail whitelist/blacklist to not be checked when invited (#10683)
* Change e-mail whitelist/blacklist to not be checked when invited And only when creating an account, not when updating it later Fix #10648 * Fix test
This commit is contained in:
		
							parent
							
								
									d77ee3f276
								
							
						
					
					
						commit
						7cb369d4c6
					
				
					 3 changed files with 6 additions and 2 deletions
				
			
		|  | @ -78,7 +78,7 @@ class User < ApplicationRecord | |||
|   accepts_nested_attributes_for :invite_request, reject_if: ->(attributes) { attributes['text'].blank? } | ||||
| 
 | ||||
|   validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale? | ||||
|   validates_with BlacklistedEmailValidator, if: :email_changed? | ||||
|   validates_with BlacklistedEmailValidator, on: :create | ||||
|   validates_with EmailMxValidator, if: :validate_email_dns? | ||||
|   validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,10 @@ | |||
| 
 | ||||
| class BlacklistedEmailValidator < ActiveModel::Validator | ||||
|   def validate(user) | ||||
|     return if user.invited? | ||||
| 
 | ||||
|     @email = user.email | ||||
| 
 | ||||
|     user.errors.add(:email, I18n.t('users.invalid_email')) if blocked_email? | ||||
|   end | ||||
| 
 | ||||
|  | @ -13,7 +16,7 @@ class BlacklistedEmailValidator < ActiveModel::Validator | |||
|   end | ||||
| 
 | ||||
|   def on_blacklist? | ||||
|     return true if EmailDomainBlock.block?(@email) | ||||
|     return true  if EmailDomainBlock.block?(@email) | ||||
|     return false if Rails.configuration.x.email_domains_blacklist.blank? | ||||
| 
 | ||||
|     domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.') | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ RSpec.describe BlacklistedEmailValidator, type: :validator do | |||
|     let(:errors) { double(add: nil) } | ||||
| 
 | ||||
|     before do | ||||
|       allow(user).to receive(:invited?) { false } | ||||
|       allow_any_instance_of(described_class).to receive(:blocked_email?) { blocked_email } | ||||
|       described_class.new.validate(user) | ||||
|     end | ||||
|  |  | |||
		Reference in a new issue