Ethsim2
(Ethan )
2026 年5 月 22 日 21:31
1
我建议将“允许删除所有帖子和主题的群组”设置拆分为更细粒度的权限。
目前,该设置范围较广:它允许选定的群组删除其他用户创建的帖子和主题,并查看已删除的帖子/主题。这对于版主或受信任的 moderating 群组来说是有意义的,但在我只想让用户对自己的内容拥有更强控制力的使用场景中,这一权限过于强大。
需要澄清的是,我并非指从数据库中永久删除/硬删除。
我主要关注的是面向普通用户的删除/修订历史行为:例如,当用户删除自己的帖子时,是否会保留常规的已删除帖子占位符,之前的编辑内容是否仍可通过修订历史界面访问,以及是否可以针对用户仅管理自己帖子的场景设置更细粒度的权限。
一种可能的拆分方式如下:
允许删除自己帖子和主题的群组
允许删除所有帖子和主题的群组
第一个设置仅适用于当前用户创建的内容。第二个设置则保留当前的广泛行为,供受信任可删除其他用户内容并查看已删除内容的群组使用。
这将更便于遵循最小权限角色设计原则。例如,某个站点可能希望 TL4/Leader 用户或自定义受信任群组在删除自己帖子/主题时拥有更多控制权,而无需同时授予他们对其他用户内容的类似版主权限。
我意识到这需要一些 safeguards,尤其是在删除首帖会影响包含其他用户回复的主题时。在这种情况下,Discourse 可以保留当前的限制,要求版主介入,或将“仅管理自己内容”的权限限制为仅适用于无回复的回复帖或主题。
核心诉求是将“仅管理自己内容的删除/修订历史”权限与当前的全局删除权限分离,这样管理员就不必在“普通用户的软删除”和范围大得多的“可删除其他用户帖子/主题”权限之间做出二选一的选择。
Ethsim2
(Ethan )
2026 年5 月 23 日 08:11
2
我认为这里的部分混淆可能源于“查看已删除内容”的检查之间存在区别。
查看 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
这意味着该设置在概念上仍然比“作者可以撤回自己的内容”更广泛。它似乎既用于删除其他用户的可见帖子,也用于至少某些已删除帖子的可见性或列表展示功能。
因此,我的担忧并非“该设置肯定会在每个端点暴露所有已删除帖子的正文”,而是当前的权限将几个概念混合在了一起:
删除其他用户的帖子/主题;
在某些上下文中查看或列出已删除的帖子/主题;
赋予作者对其自身足迹的更多控制权。
对于我的使用场景,我只需要第三种功能。
这就是为什么我认为一个针对“自有内容”的独立设置会更清晰。它可以允许用户删除或撤回自己的帖子/主题(在现有安全措施的约束下),而无需授予对其他用户内容或已删除内容可见性的更广泛的管理权限。
Ethsim2
(Ethan )
2026 年5 月 23 日 08:25
3
为了澄清 UI 行为,我的需求是:我并非要求已删除的内容对普通用户可见。
针对“删除自有内容”的权限,理想的行为应具备“查看者感知”特性:
作者应能看到自己的帖子已被撤回/删除,例如通过常规的红色已删除帖子样式或折叠状态来呈现,以便他们了解发生了什么,并在允许恢复的情况下进行恢复;
工作人员/版主应保留适当的审计和 Moderation 可见性;
普通用户应完全看不到已删除内容的任何痕迹——既无帖子正文,也无修订历史,理想情况下甚至不应显示“已删除帖子”的占位符。
因此,我所要求的区别在于:让作者能够控制其自身可见的足迹,同时不赋予非工作人员用户查看已删除内容的权限,也不赋予其控制其他用户帖子/主题的全局权力。
Ethsim2
(Ethan )
2026 年5 月 23 日 08:43
4
还有一个细微差别是修订历史。
从查看 PostRevisor 可知,编辑历史是通过 PostRevision 单独存储的,因此我并非建议“删除自有内容”的权限必须硬删除修订记录或剥夺可审计性。
我所设想的权限更多关乎面向普通用户的可见性:作者能否撤回自己的帖子/主题、被删除帖子的占位符是否保留、普通用户能否查看之前的编辑内容,以及工作人员/版主是否保留适当的审计/ moderation 访问权限(例如通过“查看 N 条隐藏回复”功能)。
因此,我所要求的区分并非:
而是:
“让用户对其自身可见内容/足迹拥有更多控制权”
同时不授予他们删除其他用户内容或普遍查看已删除内容的全局权限。