自动组的可见性如何工作?

我对自动组的可见性如何运作有些困惑。目前,我仅讨论 /groups 目录。

在我刚刚安装的 2.7.0.beta4 版本中,我观察到以下情况:

  • 如果拥有管理员或版主权限的用户查看 /groups,他们会看到全部 8 个自动组(adminsmoderatorsstafftrust_level_[0-4])。
  • 如果非管理员且非版主用户(无论其信任等级如何)查看 /groups,他们仅能看到 moderators 组。

然而,所有这些组的可见性设置都是相同的默认值:

  • 谁可以看到此组? 已登录用户
  • 谁可以看到此组的成员? 所有人

这是预期的行为吗?还是这些组的可见性参数处理存在问题?

5 个赞

代码中有一条评论解释了原因:“将所有非工作人员隐藏自动组,以简化页面。”这发生在:discourse/app/controllers/groups_controller.rb at main · discourse/discourse · GitHub

代码的作用是在非工作人员查看组页面时,覆盖自动组的可见性设置。此时只会显示“版主”组。

与上述问题无关,但当我尝试将上面发布的 GitHub 链接进行 onebox 时,预览中显示的代码没有任何格式:

3 个赞

嗯,这确实解释了原因。我相信这段代码是出于好意编写的,但它是错误的,因为:

  1. 我可能希望其他自动群组(除版主外)可见。
  2. 自动群组的管理界面允许我设置非版主自动群组的可见性,但此设置被忽略了。

删除这块代码(以及那个已经存在了 6 年的可爱拼写错误)应该很容易。

棘手的问题是,如果有人认为有必要,可以将自动群组的当前可见性设置更改为“群组所有者”,这样这些群组就不会意外地出现在所有习惯于它们被强制设为不可见的安装中。我不知道 Discourse 是否有某种机制可以在升级期间进行此类更改——但这是在进行架构更改时需要做的事情,所以肯定有办法。

另外:这种“尽管有可见性设置,但我们就是要把自动组隐藏在组目录中”的行为很糟糕,因为它掩盖了 visibility_level 中仍然有意义的其他方面。例如:

  • 管理员 X 尝试了可见性设置,并意识到无论如何非员工用户都无法在组目录中看到 trust_level_0
  • 因此……管理员 X 将 visibility_levelmember_visibility_level 设置为“所有人”,因为这些设置似乎没有任何效果。
  • 匿名用户 Z 浏览到 /groups/trust_level_0 并获取了网站上所有用户的列表。

也许管理员 X 在乎,也许不在乎,但无论如何,管理员 X 会对成为可能感到惊讶。

我之前不知道的无关有趣的知识

meta.discourse 用户按信任级别分布:

级别 用户数
TL0 45,942
TL1 29,226
TL2 3,620
TL3 124
TL4 102

你好 mdoggydog :slight_smile:

有些观点对我来说是有效的,例如:

这很令人困惑。

我邀请你创建一个#feature 主题来分享你的建议 :slight_smile:

完成!

2 个赞

对话继续于:Respect the visibility settings of all automatic groups