diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2021-04-17 03:14:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-17 03:14:25 +0200 |
commit | b3ceb3dcc4df62803aa967d7aecee686973a8996 (patch) | |
tree | dc34486813237852b90cc81b26c4e361323c7757 /app/models/canonical_email_block.rb | |
parent | 170e05db127c9f357183239a5543bdfc9525680d (diff) |
Add canonical e-mail blocks for suspended accounts (#16049)
Prevent new accounts from being created using the same underlying e-mail as a suspended account using extensions and period permutations. Stores e-mails as a SHA256 hash
Diffstat (limited to 'app/models/canonical_email_block.rb')
-rw-r--r-- | app/models/canonical_email_block.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/app/models/canonical_email_block.rb b/app/models/canonical_email_block.rb new file mode 100644 index 000000000..a8546d65a --- /dev/null +++ b/app/models/canonical_email_block.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true +# == Schema Information +# +# Table name: canonical_email_blocks +# +# id :bigint(8) not null, primary key +# canonical_email_hash :string default(""), not null +# reference_account_id :bigint(8) not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class CanonicalEmailBlock < ApplicationRecord + include EmailHelper + + belongs_to :reference_account, class_name: 'Account' + + validates :canonical_email_hash, presence: true + + def email=(email) + self.canonical_email_hash = email_to_canonical_email_hash(email) + end + + def self.block?(email) + where(canonical_email_hash: email_to_canonical_email_hash(email)).exists? + end +end |