summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2024-03-20 15:38:00 +0100
committerGitHub <noreply@github.com>2024-03-20 14:38:00 +0000
commit8a1423a47425dd67615e94bdfd13d64b53676da4 (patch)
treec7d61fae2e915e71dd8300636638f73c8a541c1b
parent0a33be39c14f896ad36ff27fb0f19c41fa17fdfe (diff)
Allow unblocking email addresses from any matching account (#29305)
-rw-r--r--app/controllers/admin/accounts_controller.rb2
-rw-r--r--app/models/canonical_email_block.rb1
-rw-r--r--app/views/admin/accounts/show.html.haml2
-rw-r--r--spec/fabricators/canonical_email_block_fabricator.rb2
4 files changed, 4 insertions, 3 deletions
diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb
index 9beb8fde6b2..d3be7817ff4 100644
--- a/app/controllers/admin/accounts_controller.rb
+++ b/app/controllers/admin/accounts_controller.rb
@@ -128,7 +128,7 @@ module Admin
def unblock_email
authorize @account, :unblock_email?
- CanonicalEmailBlock.where(reference_account: @account).delete_all
+ CanonicalEmailBlock.matching_account(@account).delete_all
log_action :unblock_email, @account
diff --git a/app/models/canonical_email_block.rb b/app/models/canonical_email_block.rb
index d09df6f5e2a..c05eb9801dc 100644
--- a/app/models/canonical_email_block.rb
+++ b/app/models/canonical_email_block.rb
@@ -20,6 +20,7 @@ class CanonicalEmailBlock < ApplicationRecord
validates :canonical_email_hash, presence: true, uniqueness: true
scope :matching_email, ->(email) { where(canonical_email_hash: email_to_canonical_email_hash(email)) }
+ scope :matching_account, ->(account) { matching_email(account&.user_email).or(where(reference_account: account)) }
def to_log_human_identifier
canonical_email_hash
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index da2f2055d07..d380d807a3c 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -30,7 +30,7 @@
= render 'admin/accounts/counters', account: @account
- if @account.local? && @account.user.nil?
- = link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.exists?(reference_account_id: @account.id)
+ = link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.matching_account(@account).exists?
- else
.table-wrapper
%table.table.inline-table
diff --git a/spec/fabricators/canonical_email_block_fabricator.rb b/spec/fabricators/canonical_email_block_fabricator.rb
index 1ef53ff4a47..2f979df794e 100644
--- a/spec/fabricators/canonical_email_block_fabricator.rb
+++ b/spec/fabricators/canonical_email_block_fabricator.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
Fabricator(:canonical_email_block) do
- email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
+ email { |attrs| attrs[:reference_account] ? attrs[:reference_account].user_email : sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
reference_account { Fabricate.build(:account) }
end