Я думаю, что часть путаницы здесь связана с тем, что могут существовать различные проверки для «просмотра удалённого контента».
Если посмотреть на 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
Это означает, что данный параметр концептуально шире, чем просто «автор может удалить свой собственный контент». Он применяется как для удаления видимых постов других пользователей, так и для предоставления хотя бы некоторых возможностей просмотра или перечисления удалённых постов.
Поэтому моя обеспокоенность заключается не в том, что «этот параметр точно раскрывает тело каждого удалённого поста в каждой конечной точке», а в том, что текущие разрешения объединяют несколько понятий:
- удаление постов/тем других пользователей;
- просмотр или перечисление удалённых постов/тем в некоторых контекстах;
- предоставление авторам большего контроля над их собственным следом.
Для моего случая использования мне нужен только третий пункт.
Именно поэтому я считаю, что отдельный параметр для собственного контента был бы более чистым решением. Он мог бы позволить пользователю удалять или отзывать свои собственные посты/темы, с учётом существующих мер безопасности, не предоставляя более широких разрешений, подобных модераторским, в отношении контента других пользователей или видимости удалённого контента.