在我们的代码库中,有一个历史上令人困惑的伪组 @everyone,它可用于:
group_list类型的站点设置- 分类权限
- 标签组
在某些情况下,有人将 @everyone 理解为“所有匿名用户和所有已登录用户”,而另一些人则将其理解为“仅所有已登录用户”。实际上,对于大多数站点设置而言,它仅表示“所有已登录用户”。
更令人困惑的是,@everyone 组也可用于某些站点设置,在这些设置中,“所有匿名用户和已登录用户”拥有该功能权限毫无意义,例如 pm_tags_allowed_for_groups。
从功能标记和开发者体验的角度来看,这也造成了混淆,因为对于某些即将推出的变更或其他设置,我们可能确实希望为“所有匿名用户和已登录用户”启用它们。
解决方案
我们将引入两个独立的自动伪组:
anonymous (ID 4)- 代表没有账户访问您网站的匿名用户logged_in_users (ID 5)- 代表所有已登录您网站的用户,其效果类似于trust_level_0自动组,但更为具体
这些组已经引入,但仅当您的网站启用了 granular_anonymous_and_logged_in_groups_permissions 这一即将推出的变更时才会生效。
当启用该即将推出的变更时,任何将 everyone 选为组的设置将自动转换为 logged_in_users ID,因此切换该变更时不会更改站点设置表中的数据。当该变更成为永久性变更后,我们将对所有组设置进行数据迁移以完成此更改。
此外,我们已将 anonymous 标记为某些站点设置的 disallowed_group,因为在这些设置中允许匿名用户毫无意义,例如 personal_message_enabled_groups。
那标签和分类权限呢?
这些权限将保持不变,因为它们的“所有人”概念在几个方面有所不同,且不依赖于底层的自动组。
