Разделить «удаление всех постов и тем разрешённых групп» на права для собственного контента и глобального контента

Я думаю, что часть путаницы здесь связана с тем, что могут существовать различные проверки для «просмотра удалённого контента».

Если посмотреть на PostGuardian, то отдельный удалённый пост, по-видимому, не становится видимым через can_see_post? только потому, что пользователь входит в delete_all_posts_and_topics_allowed_groups.

Например, видимость отдельных удалённых постов, похоже, определяется так:

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

Таким образом, обычный пользователь с уровнем доверия TL2, состоящий в delete_all_posts_and_topics_allowed_groups, не обязательно сможет открыть или прочитать тело каждого удалённого поста через 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. предоставление авторам большего контроля над их собственным следом.

Для моего случая использования мне нужен только третий пункт.

Именно поэтому я считаю, что отдельный параметр для собственного контента был бы более чистым решением. Он мог бы позволить пользователю удалять или отзывать свои собственные посты/темы, с учётом существующих мер безопасности, не предоставляя более широких разрешений, подобных модераторским, в отношении контента других пользователей или видимости удалённого контента.