Finish email allow/deny list naming migration (#30530)

This commit is contained in:
Matt Jankowski 2024-08-13 03:37:32 -04:00 committed by GitHub
parent f6d090fdf5
commit 02df1b4e4a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 43 additions and 44 deletions

View file

@ -100,7 +100,7 @@ class User < ApplicationRecord
validates :email, presence: true, email_address: true
validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? }
validates_with UserEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? }
validates_with EmailMxValidator, if: :validate_email_dns?
validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create

View file

@ -15,7 +15,7 @@ class EmailMxValidator < ActiveModel::Validator
if resolved_ips.empty?
user.errors.add(:email, :unreachable)
elsif on_blacklist?(resolved_domains, user.sign_up_ip)
elsif email_domain_blocked?(resolved_domains, user.sign_up_ip)
user.errors.add(:email, :blocked)
end
end
@ -34,9 +34,9 @@ class EmailMxValidator < ActiveModel::Validator
end
def on_allowlist?(domain)
return false if Rails.configuration.x.email_domains_whitelist.blank?
return false if Rails.configuration.x.email_domains_allowlist.blank?
Rails.configuration.x.email_domains_whitelist.include?(domain)
Rails.configuration.x.email_domains_allowlist.include?(domain)
end
def resolve_mx(domain)
@ -58,7 +58,7 @@ class EmailMxValidator < ActiveModel::Validator
[ips, records]
end
def on_blacklist?(domains, attempt_ip)
def email_domain_blocked?(domains, attempt_ip)
EmailDomainBlock.block?(domains, attempt_ip: attempt_ip)
end
end

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true
class BlacklistedEmailValidator < ActiveModel::Validator
class UserEmailValidator < ActiveModel::Validator
def validate(user)
return if user.valid_invitation? || user.email.blank?
@ -23,18 +23,18 @@ class BlacklistedEmailValidator < ActiveModel::Validator
end
def not_allowed_through_configuration?(email)
return false if Rails.configuration.x.email_domains_whitelist.blank?
return false if Rails.configuration.x.email_domains_allowlist.blank?
domains = Rails.configuration.x.email_domains_whitelist.gsub('.', '\.')
domains = Rails.configuration.x.email_domains_allowlist.gsub('.', '\.')
regexp = Regexp.new("@(.+\\.)?(#{domains})$", true)
email !~ regexp
end
def disallowed_through_configuration?(email)
return false if Rails.configuration.x.email_domains_blacklist.blank?
return false if Rails.configuration.x.email_domains_denylist.blank?
domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.')
domains = Rails.configuration.x.email_domains_denylist.gsub('.', '\.')
regexp = Regexp.new("@(.+\\.)?(#{domains})", true)
regexp.match?(email)

View file

@ -11,7 +11,7 @@ class Scheduler::AutoCloseRegistrationsScheduler
OPEN_REGISTRATIONS_MODERATOR_THRESHOLD = 1.week + UserTrackingConcern::SIGN_IN_UPDATE_FREQUENCY
def perform
return if Rails.configuration.x.email_domains_whitelist.present? || ENV['DISABLE_AUTOMATIC_SWITCHING_TO_APPROVED_REGISTRATIONS'] == 'true'
return if Rails.configuration.x.email_domains_allowlist.present? || ENV['DISABLE_AUTOMATIC_SWITCHING_TO_APPROVED_REGISTRATIONS'] == 'true'
return unless Setting.registrations_mode == 'open'
switch_to_approval_mode! unless active_moderators?