logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe git clone https://hacktivis.me/git/mastofe.git

blacklisted_email_validator.rb (884B)


  1. # frozen_string_literal: true
  2. class BlacklistedEmailValidator < ActiveModel::Validator
  3. def validate(user)
  4. user.errors.add(:email, I18n.t('users.invalid_email')) if blocked_email?(user.email)
  5. end
  6. private
  7. def blocked_email?(value)
  8. on_blacklist?(value) || not_on_whitelist?(value)
  9. end
  10. def on_blacklist?(value)
  11. return true if EmailDomainBlock.block?(value)
  12. return false if Rails.configuration.x.email_domains_blacklist.blank?
  13. domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.')
  14. regexp = Regexp.new("@(.+\\.)?(#{domains})", true)
  15. value =~ regexp
  16. end
  17. def not_on_whitelist?(value)
  18. return false if Rails.configuration.x.email_domains_whitelist.blank?
  19. domains = Rails.configuration.x.email_domains_whitelist.gsub('.', '\.')
  20. regexp = Regexp.new("@(.+\\.)?(#{domains})$", true)
  21. value !~ regexp
  22. end
  23. end