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

@Noble_Fish ,这是基于 AI 生成的按组设置列表,包含每个设置的用途,以及匿名用户/已登录用户如何受该设置影响。请注意,虽然我有相当把握认为这是正确的,但就像所有 AI 生成的内容一样,最好还是你自己核实一下事实。

我认为最有趣的列是“everyone 在更改前是否也包含 anonymous_users?”,如果这里是 Yes,那就意味着在应用即将进行的更改之前,everyone 指的是已登录用户和匿名用户。

如你所见,其中只有少数几个,因此管理员只需要在站点设置中明确将 anonymous_users 添加到这些设置中:

  • hidden_post_visible_groups - 我实际上需要修改这一项以允许 anonymous_users,当前的代码对于即将进行的更改来说并不完全正确。
  • lazy_load_categories_groups - 我也需要修复这一项,它执行了一个多余的 everyone 检查,而 user.in_any_groups? 内部已经完成了这个检查。
  • styleguide_allowed_groups - 这一项目前可以正常工作,但我会稍微调整一下。

当即将进行的更改变为永久时,将仅使用 logged_in_usersanonymous_users 组,而 everyone 将被删除。


设置项 描述 logged_in_users 是否适用? anonymous_users 是否适用? everyone 在更改前是否也包含 anonymous_users 代码查找结果
whispers_allowed_groups 允许指定组的成员在主题内进行私密通信。 不允许 everyonelogged_in_usersanonymous_users;运行时还期望具体的组/成员资格。
hidden_post_visible_groups 允许这些组的成员查看隐藏帖子。工作人员用户始终可以查看隐藏帖子。 在拒绝匿名用户之前检查 everyone;否则使用 in_any_groups?
about_page_hidden_groups 不在 /about 页面上显示特定组的成员。 使用 group_users;伪组没有成员行。
about_page_extra_groups 在关于页面上版主下方显示的组。 加载具体组及其成员以进行显示。
anonymous_posting_allowed_groups 允许启用匿名发帖的组。 通过 in_any_groups? 进行已登录用户门控;不允许 anonymous_users
personal_message_enabled_groups 允许这些组中的用户创建个人消息。 通过 in_any_groups? 进行已登录用户门控;不允许 anonymous_users
shared_drafts_allowed_groups 允许这些组中的用户查看和编辑共享草稿。 Guardian/用户门控;不允许 anonymous_users
here_mention_allowed_groups 允许提及 @here 的组。 需要已认证用户;不允许 anonymous_users
approve_unless_allowed_groups 不属于这些组的用户发布的帖子必须经过审核。 通过 in_any_groups? 进行用户门控;不允许 anonymous_users
approve_new_topics_unless_allowed_groups 不属于这些组的用户创建的新主题必须经过审核。 通过 in_any_groups? 进行用户门控;不允许 anonymous_users
skip_review_media_groups 这些组之外的用户发布的包含嵌入媒体的帖子将发送进行审核。 通过 in_any_groups? 进行用户门控;不允许 anonymous_users
content_localization_allowed_groups 允许更新本地化内容的组。 Guardian/用户门控;不允许 anonymous_users
email_in_allowed_groups 允许通过电子邮件发布新主题的组。 电子邮件发送者用户门控;不允许 anonymous_users
view_raw_email_allowed_groups 可以查看原始传入电子邮件内容的组。 Guardian 用户门控;不允许 anonymous_users
uploaded_avatars_allowed_groups 指定允许上传自定义头像的组。 当前/目标用户门控;不允许 anonymous_users
create_topic_allowed_groups 允许创建新主题的组。 需要用户并使用 in_any_groups?;不允许 anonymous_users
topic_timers_allowed_groups 允许设置主题计时器的组。 Guardian 用户门控;不允许 anonymous_users
edit_wiki_post_allowed_groups 允许编辑标记为 wiki 的帖子的组。 Guardian 用户门控;不允许 anonymous_users
edit_post_allowed_groups 允许编辑帖子的组。 Guardian 用户门控;不允许 anonymous_users
self_wiki_allowed_groups 允许这些组中的用户将自己的帖子设为 wiki。 Guardian 用户门控;不允许 anonymous_users
send_email_messages_allowed_groups 允许通过电子邮件发送个人消息的组。 Guardian 用户门控;不允许 anonymous_users
flag_post_allowed_groups 允许标记帖子的组。 Guardian 用户门控;不允许 anonymous_users
post_links_allowed_groups 允许在帖子中包含链接的组。 需要已认证用户;不允许 anonymous_users
embedded_media_post_allowed_groups 这些组中的用户允许在帖子中嵌入媒体项目。 操作用户门控;不允许 anonymous_users
profile_background_allowed_groups 允许上传个人资料背景的组。 用户门控;不允许 anonymous_users
user_card_background_allowed_groups 允许上传用户卡片背景的组。 用户门控;不允许 anonymous_users
invite_allowed_groups 允许邀请用户的组。 Guardian 用户门控;不允许 anonymous_users
ignore_allowed_groups 允许忽略其他用户的组。 Guardian 用户门控;不允许 anonymous_users
delete_all_posts_and_topics_allowed_groups 允许删除其他用户创建的帖子和主题并查看已删除内容的组。 Guardian/当前用户门控;不允许 anonymous_users
edit_all_topic_groups 允许该组中的用户编辑其他用户的主题标题、标签和类别。 原始分割后使用 in_any_groups?;不允许 anonymous_users
edit_all_post_groups 允许该组中的用户编辑其他用户的帖子。 通过 in_any_groups? 进行用户门控;不允许 anonymous_users
change_post_ownership_allowed_groups 允许这些组中的用户更改帖子所有权。 当前用户门控;不允许 anonymous_users
cross_origin_opener_unsafe_none_groups 隐藏的 COOP 覆盖组;匹配的用户将获得 Cross-Origin-Opener-Policy: unsafe-none 需要 current_user.present?;匿名选择在运行时没有影响。
user_api_key_allowed_groups 生成用户 API 密钥所需的组成员资格。 当前用户门控;不允许 anonymous_users
create_tag_allowed_groups 允许创建标签的组。 Guardian 用户门控;不允许 anonymous_users
edit_tags_allowed_groups 允许编辑标签、标签描述和标签同义词的组。 Guardian 用户门控;不允许 anonymous_users
tag_topic_allowed_groups 允许为主题添加标签的组。 Guardian 用户门控;不允许 anonymous_users
pm_tags_allowed_for_groups 允许包含的组成员标记任何个人消息。 Guardian 用户门控;不允许 anonymous_users
lazy_load_categories_groups 仅为这些组的用户懒加载类别信息。 显式的 everyone 检查加上 guardian in_any_groups?anonymous_users 具有实际意义。
chat_allowed_groups 这些组中的用户可以聊天,但匿名用户只有在添加到该设置时才能查看聊天。 已登录聊天使用 in_any_groups?;匿名公共聊天显式检查 anonymous_users
direct_message_enabled_groups 允许这些组中的用户创建用户间个人聊天。 已登录聊天 guardian 门控;没有有意义的匿名 DM 路径。
chat_pinning_messages_allowed_groups 这些组中的用户允许固定聊天消息。 需要聊天访问权限/当前用户;没有匿名固定路径。
chat_message_flag_allowed_groups 这些组中的用户允许标记聊天消息。 用户门控;匿名路径被周围的聊天权限阻止。
no_ads_for_groups 不向这些组中的用户显示广告。 仅添加到 current_user 序列化器;没有匿名当前用户负载。
adsense_exclude_groups 不会向这些组的成员显示广告。 通过 in_any_groups? 进行当前用户广告标志;没有匿名当前用户负载。
dfp_exclude_groups 不会向这些组的成员显示广告。 通过 in_any_groups? 进行当前用户广告标志。
amazon_exclude_groups 不会向这些组的成员显示广告。 通过 in_any_groups? 进行当前用户广告标志。
carbonads_exclude_groups 不会向这些组的成员显示广告。 通过 in_any_groups? 进行当前用户广告标志。
adbutler_exclude_groups 不会向这些组的成员显示广告。 通过 in_any_groups? 进行当前用户广告标志。
composer_ai_helper_allowed_groups 这些组中的用户将在编辑器中看到 AI 助手按钮。 通过 in_any_groups? 进行已登录 AI 助手门控。
post_ai_helper_allowed_groups 允许访问帖子中 AI 助手功能的用户组。 通过 in_any_groups? 进行已登录 AI 助手门控。
ai_pm_summarization_allowed_groups 允许在个人消息中创建和查看摘要的组。 使用原始 user.group_ids,因此伪组不匹配。
ai_bot_debugging_allowed_groups 允许这些组查看显示原始 AI 请求和响应的调试按钮。 对匿名用户显式返回 false,然后使用 in_any_groups?
ai_bot_allowed_groups 当 GPT Bot 有权访问个人消息时,它将回复这些组的成员。 主要门控使用 in_any_groups?;一个游乐场路径使用原始 group_ids
ai_bot_public_sharing_allowed_groups 允许这些组通过唯一链接与公众共享 AI 个人消息。 对匿名用户显式返回 false,然后使用 in_any_groups?
assign_allowed_on_groups 这些组中的用户允许分配主题。 使用原始 user.group_ids/GroupUser;伪组没有行。
discourse_post_event_allowed_on_groups 允许创建事件的组。 原始 groups.where(id: ...)everyone 是特殊处理的,但 logged_in_users 不是。
discourse_kanban_manage_board_allowed_groups 允许创建和配置看板板的组。 Guardian 使用 in_any_groups?,但写控制器需要登录。
create_policy_allowed_groups 向帖子添加策略所需的组成员资格。 通过 in_any_groups? 进行帖子/用户门控。
flag_posts_voting_comments_allowed_groups 允许标记帖子投票评论的组。 通过 in_any_groups? 进行用户门控。
allow_solved_in_groups 允许在这些组的组消息中标记解决方案。 无用户门控 无用户门控 无用户门控 匹配 PM topic.allowed_groups,而不是当前用户成员资格。
accept_all_solutions_allowed_groups 允许在任何主题上接受解决方案的组。 通过 in_any_groups? 进行已认证/当前用户门控。
discourse_templates_groups_allowed_private_templates 允许使用私有模板的组。 原始 GroupUser.exists?;仅 everyone 是特殊处理的。
poll_create_allowed_groups 允许创建投票的组。 通过 in_any_groups? 进行操作/当前用户门控。
styleguide_allowed_groups 将样式的可见性限制为所提供组的成员。 控制器显式处理 anonymous_users;在更改之前也允许通过 everyone 进行匿名访问。
2 个赞