为匿名和登录用户设置基于组的细粒度权限

事实并非如此,我们在内部和外部都反复看到过这种情况,并且在整个代码库中也是如此。

我还没处理到分类(categories)部分,这里没有任何变化。

人们压倒性地使用 TL0 来表示“所有已登录用户”,因为我们没有更好的方式来表示这一点。logged_in_users 组至少在其含义上是完全清晰的,而且你完全可以继续使用 TL0/TL1 等。唯一被移除的组是 everyone

是的,我确实只是为了“为了改变而改变”才做这些 :+1: 请暂时考虑一下你的措辞,我们这里并没有习惯毫无理由地做完全不必要的事情。这项工作已经持续数月,并且不会改变方向。

3 个赞

好吧,也许是我误解了这个改动?

如果提案是引入以下自动用户组:

  • anon(匿名)
  • logged in(已登录)

这看起来没问题,而且含义也很明确。

(实际上我挺喜欢这个方案的!:+1:

然而,如果提案是最终移除:

  • everyone(所有人)

这在我看来就不合理了,因为“所有人”是代表访问权限阈值的一组自动用户组的一部分,该组还包括:

  • trust_level_0
  • trust_level_1

等等。

它们全部代表访问权限的阈值,包括“所有人”。

“所有人”组也被称为“trust_level_none”(无信任级别)。

这是一种简洁地表达“公开访问”的方式。

我理解你目前并没有提议在分类权限中移除它(:+1:),但就我个人而言,我希望看到对保留此自动用户组的承诺,因为至少对我来说,这是有道理的。

那么,为什么不允许它在其他地方像其他任何自动信任级别组一样被使用呢?

否则,每当你需要表达具有“公开访问”权限时,你就需要添加两个组,这似乎是一种毫无意义的复杂性?

为什么要费心去添加逻辑来“屏蔽”“所有人”呢?

也许另一种替代方案是,如果存在更好的名称,可以重新考虑“所有人”这个名字,但保留其含义、功能以及在平台上的可用性,这样大家(咳咳)就都满意了?

我认为这里的区别在于:是保留一个方便选择“公开访问”的方式,还是保留现有的 everyone 组。我同意,每次想要公开访问时都需要选择两个组确实更麻烦,我们可以通过界面(UI)来改进这一点。

例如,我们可以在组选择器中添加一个“公开”快捷方式,一次性同时选中 anonymous_userslogged_in_users。这样你会看到两个组都被选中,并且可以移除其中任意一个。这既提供了你所描述的便利性,又保持了底层权限的明确性。我们只会在允许这两个组的地方提供该快捷方式。

保留现有 everyone 组的问题在于,它并不始终意味着“公开访问”。在类别可见性方面,它确实如此,但在大多数基于组的站点设置中,它实际上意味着“所有已登录用户”。此外,正如上面的讨论所示,不同的主题和插件对其解释也各不相同。

因此,我们不能简单地保留它并声称它在所有地方都包含匿名用户,因为这可能会授予之前不存在的访问权限。保留其现有行为会维持这种不一致性,而重命名它也无法解决这一问题。

定义一个一致通用的组是可行的,但这仍然需要我们目前正在进行的迁移和审计工作。此外,在不支持匿名访问的地方,它也必须被禁止,否则我们又会回到“everyone”在那些地方仅意味着“仅已登录用户”的局面。我不得不在许多设置中将 anonymous_users 添加为 disallowed_groups 的值,而在之前 everyone 在这些设置中是允许的。例如:

我倾向于在 UI 中提供这种便利性,底层使用两个明确的组,这样管理员和开发者在所有地方都能保持一致性。

2 个赞