Discourse 群组侧边栏菜单

:information_source: 摘要 创建仅限选定组访问的自定义侧边栏菜单
:eyeglasses: 预览 加入此 主题创建者组 然后 在此处预览
:hammer_and_wrench: 仓库 \u003chttps://github.com/Lillinator/discourse-group-sidebar-menus\u003e
:question: 安装指南 如何安装主题或主题组件
:open_book: Discourse 主题新手? Discourse 主题使用入门指南

安装此主题组件

:woman_technologist:t2: 概述

此 Discourse 主题组件使论坛管理员能够创建仅对所选组的成员可访问的自定义侧边栏菜单。

主要特点:

  • 基于组的访问控制 - 菜单部分仅对授权用户渲染
  • 管理员 UI 配置 - 创建组菜单部分的所有设置都在主题组件管理员 UI 中
  • 多个部分 - 为不同组创建无限的菜单部分(在合理范围内)
  • 客户端安全 - 未授权用户无法在 DOM、Web 检查器或安全模式中看到菜单部分
  • 无全局污染 - 不需要创建全局侧边栏部分
  • 管理员快速编辑链接 - 菜单标题中的铅笔图标将管理员直接链接到组件设置

:briefcase: 用例

  • 仅限员工的资源和快速链接
  • 类别版主快捷方式
  • 自定义组门户(项目团队、学习小组、读书俱乐部、VIP 成员)
  • 链接到父级或合作伙伴网站资源

:gear: 设置

菜单部分 (menu_sections)

打开对象设置编辑器以配置自定义组菜单部分。

部分属性

属性 描述
菜单标题 显示为侧边栏部分标题的标题
允许的组 允许查看此菜单部分的组(每部分最多 20 个组)
菜单链接 要在此部分中显示的链接集合(每部分最多 20 个链接)

链接属性

属性 描述
图标 FontAwesome 图标名称(例如 circle-infostaruser-group)。可能需要添加到 Admin > All site settings > svg icon subset
文本 链接的显示标签
URL 链接目标 - 支持相对路径(/faq/my/preferences)和绝对 URL(https://example.com

:wrench: 安装和配置

  1. 按照 Installing a theme or theme component 安装主题组件。
  2. 转到 对象设置编辑器
  3. 单击 + new_menu_section 按钮以设置第一个自定义菜单部分
  4. 菜单标题 字段中为新菜单命名,然后选择有权访问它的组。
  5. 单击 + new_menu_section 添加另一个部分,或保存更改。
管理员配置截图及示例设置

首次安装 - 转到 对象设置编辑器

包含 2 个自定义菜单和 3 个用户(其中一个为管理员)的示例场景:

  • @Catra 喜欢猫,并且是 pink 组的成员,该组将可以访问 猫菜单 :grinning_cat:
  • @HelloKitty 喜欢狗,并且是 purple 组的成员,该组将可以访问 狗菜单 :dog_face:
  • @Lillypurple 组的成员,因为她养了一条狗,而且狗更好。但她也是论坛管理员,管理员将可以访问 猫菜单,因为猫需要更多的监督 :dog_face: :cat_with_wry_smile:

创建一个新的自定义菜单 - 对于我们的示例,创建 猫菜单 并添加允许访问它的组 - pinkadmins。然后单击 + menu_link 按钮来设置新菜单的链接。

添加菜单链接 - 1. Fontawesome 图标名称,2. 要显示的链接文本,以及 3. URL,相对或绝对。单击 + menu_link 按钮向此菜单添加另一个链接。

创建另一个名为 狗菜单 的自定义菜单部分,仅授予 purple 组访问权限并配置链接:

生成的侧边栏菜单访问权限截图

用户 @Catra 有猫菜单! :grinning_cat:

用户 @HelloKitty 有狗菜单! :dog_face:

管理员用户 @Lilly 两个菜单都有,并且可以编辑它们! :smiling_cat_with_heart_eyes:

配置示例

菜单标题: "员工资源"
允许的组: staff
链接:
  - 图标: wrench
    文本: 版主指南
    URL: /t/moderation-guide/123
  - 图标: chart-line
    文本: 分析仪表板
    URL: /admin/dashboard

:light_bulb: 重要说明

管理员访问

  • 管理员必须将自己添加到组中才能看到为这些组配置的菜单。仅管理员身份并不能授予访问所有自定义菜单的权限。这是故意的!
  • 属于菜单允许组的管理员将在部分标题中看到一个铅笔图标,该图标链接到组件设置。

组配置

  • 不支持 everyone - 使用原生的侧边栏页脚 UI 为所有用户(包括匿名访问者)创建全局自定义菜单。
  • 每个菜单部分最多 20 个组。如果需要更多,请创建具有不同组分配的重复部分。
  • 属于多个组的用户将看到他们有权访问的所有菜单部分。

测试和组织

  • 使用测试帐户来验证不同组组合的正确访问权限。
  • 跟踪您的菜单配置,以避免随着复杂性的增加而感到困惑;对于拥有更多组的大型论坛,建议使用访问矩阵或类似文档。

安全注意事项

此组件提供 UI 级别的访问控制。它控制菜单访问权限,而不是资源访问权限 - 它不能替代类别安全权限。

此组件保护的内容:

  • :white_check_mark: 未授权的用户组无法访问菜单部分
  • :white_check_mark: 链接无法通过检查器/控制台/安全模式发现
  • :white_check_mark: 干净的用户体验,没有菜单混乱

管理员最佳实践:

  • 在设置此组件之前,单独配置任何链接类别的安全权限和相关组的成员资格 - 规划您的配置。
  • 管理员有责任确保链接到外部资源的授权适合所选组。

其他说明 :pen:

  • 此组件与 Discourse 侧边栏菜单重新排序 兼容,该组件用于将截图中两个自定义菜单部分放置在侧边栏的顶部。只需使用自定义菜单部分的标题的 slug 格式,例如 cat-menu
  • 这是与 @Moin 的合作项目 - 她的输入、灵感和反馈是无价的。
8 个赞

我似乎在仓库上遇到了 404 错误。

编辑:现在一切正常!

2 个赞

哈哈,再试一次。忘了把它设为公开了!:laughing:

5 个赞