群组用户状态

:information_source: 摘要 将用户状态功能限制在特定群组
:hammer_and_wrench: 仓库链接 https://github.com/Lillinator/group-user-status
:open_book: 安装指南 如何在 Discourse 中安装插件

:woman_technologist:t2: 概述

这个简单的插件允许论坛管理员将用户状态功能限制在特定的用户群组或信任等级。

目前,Discourse 核心中的用户状态只能针对整个论坛启用。然而,此插件引入了更细粒度的控制,允许管理员指定哪些用户群组可以设置和显示用户状态,为定制化的社区管理提供更多灵活性。

功能特性

  • 基于群组的权限 - 将用户状态设置限制在选定的群组(信任等级、自定义群组或两者皆可)
  • 管理员覆盖 - 管理员始终保留状态权限,无论群组选择如何
  • 自动清理 - 当用户失去权限时(通过设置更改或移出群组),移除其状态
  • UI 集成 - 对未授权用户隐藏状态控制选项

:gear: 安装与配置

  1. 遵循标准插件安装指南

  2. 进入 Admin -> All site settings(管理员 → 所有站点设置),搜索“user status”以找到相关的管理设置。

  3. 确保现有的管理设置 Enable_user_status 已启用。

  4. 然后进入新的管理设置 User_status_allowed_groups,选择允许使用和显示用户状态功能的群组。

  5. 不在 User_status_allowed_groups 设置列表中的群组,将无法通过用户菜单中的选项卡或其 preferences/account(偏好设置/账户)选项卡访问用户状态弹窗。

  6. 如果您已经启用了 Enable_user_status 且部分用户已设置了用户状态,除非立即将这些用户添加到新设置中,否则此插件将清除他们的状态。

  7. 如果用户通过 /admin/users//admin/groups/ 路径从允许的群组中移除(或者如果他们被允许自行离开群组并确实离开了),现有的状态也会被移除。

  8. 选择伪群组 everyone(所有人)与将其留空或根本不安装该组件没有区别!

  9. 管理员始终可以设置和更改其状态,无论选择了哪些群组;因此,仅选择 admins(管理员)群组会将用户状态的使用限制在论坛管理员范围内。


:wrench: 设置

插件添加了一个新的管理设置 - User_status_allowed_groups,这是一个论坛群组的下拉列表。可以通过在“所有站点设置”中搜索 user status 找到它,它位于管理员侧边栏的 Group permissions(群组权限)部分下。


:briefcase: 示例用例

  • 如果用户状态功能仅与论坛工作人员相关,他们可能希望向论坛的其他用户显示状态。

  • 仅允许类别版主设置其状态。

  • 可用于防止信任度较低的群组成员滥用(或误用)用户状态功能。

  • 只有特定群组应能够显示其用户状态 - 例如,技术支持团队、产品卖家、类别专家、赞助者、溜溜球高手等。

  • 只有管理员被允许去喝咖啡 :wink: :coffee:


:bulb: 注意事项:通知与日历集成

此插件仅影响用户状态,不影响通知设置:

  • 状态弹窗中的“暂停通知”选项是一个独立的功能。
  • 如果用户的状态被此插件清除,其暂停的通知仍将保持激活状态。
  • 暂停通知的指示器将保留在其头像上,直到持续时间结束或他们手动取消暂停。

如果您安装了 Discourse Calendar 插件

  • 由日历插件设置的假期状态不受此插件影响。
  • 极罕见的边缘情况: 如果用户手动覆盖了其假期状态,且管理员在其计划假期期间将其群组从 user_status_allowed_groups 中移除,手动设置的状态将被清除。
  • 日历插件每 10 分钟自动重置一次假期状态,因此任何被清除的状态将在下一次计划运行时恢复。
  • 如果用户不在允许的群组中,但当前拥有计划好的假期状态,他们无法手动设置或编辑状态。

:camera_flash: 更多截图

设置对用户状态影响的截图

使用用户状态功能的权限在 User_status_allowed_groups 设置中授予。例如,test-pilot(测试飞行员)用户是 TL_2 且属于 purple(紫色)群组;在此处,他们被允许设置和显示用户状态,与 Staff(工作人员)和 TL_4 一样:


一旦更改 User_status_allowed_groups 设置并从设置中移除 purple 群组,test-pilot 用户使用用户状态功能的能力将从用户菜单及其 preferences/account 页面中移除,如果他们已设置了现有的用户状态,该状态将在下次页面刷新时被清除。当用户从群组中移除(或离开,如果允许这样做)时,也会发生同样的效果。


查看我的其他 Discourse 作品
16 个赞

干得好!文档写得也很漂亮。我期待着试一试。

1 个赞

我已使用新的 disallowed_groups 细粒度设置更新了这个插件,因此无法再选择不必要的 anonymous_userslogged_in_userseveryone 组。下次您更新 Discourse 实例时,它会自动更新。

更多信息请参见此主题:

3 个赞