「グループによる投稿とトピックの全削除」を「自分自身のコンテンツ」と「グローバルコンテンツ」の権限に分割

ここでの混乱の一部は、「削除されたコンテンツを表示する」チェックに異なる種類があるかもしれないという点にあると思います。

PostGuardian を見てみると、個別に削除された投稿は、単にユーザーが delete_all_posts_and_topics_allowed_groups に所属しているからといって、can_see_post? を通じて表示されるわけではありません。

例えば、個別の削除済み投稿の表示権限は、以下のような処理を経ているようです。

def can_see_deleted_post?(post)
  return false if !post.trashed?
  return false if @user.anonymous?
  return true if is_staff?
  post.deleted_by_id == @user.id && @user.has_trust_level?(TrustLevel[4])
end

したがって、delete_all_posts_and_topics_allowed_groups に所属する非スタッフの TL2 ユーザーは、can_see_post? を通じてすべての削除済み投稿本文を開いて読めるわけではありません。

しかし、同じ設定は以下でも使用されています。

def can_see_deleted_posts?(category = nil)
  is_category_group_moderator?(category) ||
    @user.in_any_groups?(SiteSetting.delete_all_posts_and_topics_allowed_groups_map)
end```
つまり、この設定は概念的には「投稿者が自身のコンテンツを撤回できる」という範囲よりも広いものです。これは、他のユーザーの表示済み投稿を削除するためにも、少なくとも一部の削除済み投稿の表示やリスト表示の機能のためにも使用されているようです。

そのため、私の懸念は「この設定が確実にすべてのエンドポイントですべての削除済み投稿本文を露出させる」ということよりも、現在の権限がいくつかの概念を混合している点にあります。

1. 他のユーザーの投稿やトピックを削除する権限;
2. 一部の文脈で削除された投稿やトピックを表示またはリスト表示する権限;
3. 投稿者が自身の足跡をより制御できるようにする権限。

私のユースケースでは、3 番目のみが必要です。

そのため、独自のコンテンツに関する設定の方が明確だと考えています。これにより、既存のセーフガードに従って、ユーザーが自身の投稿やトピックを削除または撤回できるようにしつつ、他のユーザーのコンテンツに対するより広範なモデレーション的な権限や、削除済みコンテンツの表示権限を与えずに済みます。