From d47c89055f9d735b5c8b3e5c9bfa47499a869aee Mon Sep 17 00:00:00 2001 From: KMY Date: Fri, 28 Apr 2023 14:29:50 +0900 Subject: [PATCH] Block domain with status policy --- app/policies/status_policy.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb index a33d1f1112..5d2bf17da6 100644 --- a/app/policies/status_policy.rb +++ b/app/policies/status_policy.rb @@ -18,7 +18,7 @@ class StatusPolicy < ApplicationPolicy elsif private? owned? || following_author? || mention_exists? else - current_account.nil? || (!author_blocking? && !author_blocking_domain?) + current_account.nil? || (!author_blocking? && !author_blocking_domain? && !server_blocking_domain?) end end @@ -99,4 +99,18 @@ class StatusPolicy < ApplicationPolicy def author record.account end + + def server_blocking_domain? + @domain_block = DomainBlock.find_by(domain: current_account&.domain) + if @domain_block + (@domain_block.reject_send_not_public_searchability && record.compute_searchability != 'public') || + (@domain_block.reject_send_unlisted_dissubscribable && record.unlisted_visibility? && record.account.dissubscribable) || + (@domain_block.reject_send_public_unlisted && record.public_unlisted_visibility?) || + (@domain_block.reject_send_dissubscribable && record.account.dissubscribable) || + (@domain_block.reject_send_media && record.with_media?) || + (@domain_block.reject_send_sensitive && ((record.with_media? && record.sensitive) || record.spoiler_text)) + else + false + end + end end