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
This commit is contained in:
parent
170e05db12
commit
b3ceb3dcc4
9 changed files with 172 additions and 21 deletions
|
@ -235,6 +235,7 @@ class Account < ApplicationRecord
|
|||
transaction do
|
||||
create_deletion_request!
|
||||
update!(suspended_at: date, suspension_origin: origin)
|
||||
create_canonical_email_block!
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -242,6 +243,7 @@ class Account < ApplicationRecord
|
|||
transaction do
|
||||
deletion_request&.destroy!
|
||||
update!(suspended_at: nil, suspension_origin: nil)
|
||||
destroy_canonical_email_block!
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -569,4 +571,16 @@ class Account < ApplicationRecord
|
|||
def clean_feed_manager
|
||||
FeedManager.instance.clean_feeds!(:home, [id])
|
||||
end
|
||||
|
||||
def create_canonical_email_block!
|
||||
return unless local? && user_email.present?
|
||||
|
||||
CanonicalEmailBlock.create(reference_account: self, email: user_email)
|
||||
end
|
||||
|
||||
def destroy_canonical_email_block!
|
||||
return unless local?
|
||||
|
||||
CanonicalEmailBlock.where(reference_account: self).delete_all
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue