diff options
author | Yamagishi Kazutoshi <ykzts@desire.sh> | 2017-11-15 04:37:17 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-11-14 20:37:17 +0100 |
commit | 20150659e6f084d6c6fb4080d08c4104b8ac0570 (patch) | |
tree | 62d0eef7a965d6dd942970cfe4e830bca514c388 /app | |
parent | 8087aa83d414150fd1141d237ae9d7c0366fec8d (diff) |
Add uniqueness to block email domains (#5692)
Diffstat (limited to 'app')
-rw-r--r-- | app/models/email_domain_block.rb | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index 51410605b..2c348197c 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -4,14 +4,33 @@ # Table name: email_domain_blocks # # id :bigint not null, primary key -# domain :string not null +# domain :string default(""), not null # created_at :datetime not null # updated_at :datetime not null # class EmailDomainBlock < ApplicationRecord + before_validation :normalize_domain + + validates :domain, presence: true, uniqueness: true + def self.block?(email) - domain = email.gsub(/.+@([^.]+)/, '\1') + _, domain = email.split('@', 2) + + return true if domain.nil? + + begin + domain = TagManager.instance.normalize_domain(domain) + rescue Addressable::URI::InvalidURIError + return true + end + where(domain: domain).exists? end + + private + + def normalize_domain + self.domain = TagManager.instance.normalize_domain(domain) + end end |