权限管理详解

RBAC 权限体系——角色、权限码、权限矩阵和自定义角色。

概述

OpenVort 采用 RBAC(基于角色的访问控制)权限体系。每个成员被分配一个或多个角色,角色决定了能访问的功能和 API。

内置角色

系统预置 4 个角色,不可删除:

角色 显示名 说明
admin 管理员 拥有全部权限(通配符 *
manager 部门管理者 可管理团队、查看日志、管理定时任务等
member 普通成员 基本使用权限(搜索、发消息、看仪表盘)
guest 访客 无权限

权限码一览

系统定义了 24 个权限码,覆盖所有功能模块:

通讯录

权限码 说明 admin manager member guest
contacts.sync 同步通讯录 - -
contacts.search 搜索成员 -
contacts.match 管理匹配建议 - -

IM 消息

权限码 说明 admin manager member guest
wecom.send 发送企微消息 -
feishu.send 发送飞书消息 -
dingtalk.send 发送钉钉消息 -

成员与部门

权限码 说明 admin manager member guest
members.view 查看成员 - -
members.manage 管理成员 - - -
departments.view 查看部门 - -
departments.manage 管理部门 - - -

插件与 Skill

权限码 说明 admin manager member guest
plugins.view 查看插件 - -
plugins.manage 管理插件 - - -
skills.view 查看 Skill - -
skills.manage 管理 Skill - - -

通道与设置

权限码 说明 admin manager member guest
channels.view 查看通道 - -
channels.manage 管理通道 - - -
settings.view 查看设置 - - -
settings.manage 管理设置 - - -

运维

权限码 说明 admin manager member guest
logs.view 查看日志 - -
dashboard.view 查看仪表盘 -
schedules.use 使用定时任务 - -
schedules.manage 管理定时任务 - -
webhooks.view 查看 Webhook - -
webhooks.manage 管理 Webhook - - -
agents.view 查看 Agent - -
agents.manage 管理 Agent - - -

自定义角色

除了内置角色,管理员可以创建自定义角色,灵活组合权限。

创建自定义角色

在 Web 管理面板 → 角色管理 中:

  1. 点击「新建角色」
  2. 填写角色名称和显示名
  3. 勾选需要的权限码
  4. 保存

示例:创建"运营主管"角色

角色名: ops_lead
显示名: 运营主管
权限:
  - contacts.search
  - wecom.send / feishu.send / dingtalk.send
  - members.view
  - dashboard.view
  - schedules.manage
  - skills.view

这个角色可以管理定时任务(让 AI 员工定时发内容)、查看仪表盘,但不能管理系统设置。

权限与 AI 工具的关系

权限不仅控制 Web 面板的页面访问,还影响 AI 员工可使用的工具:

  • 用户发消息给 AI 员工时,系统会检查用户权限
  • 没有对应权限的工具不会出现在 AI 可用工具列表中
  • 例如:member 角色的用户无法让 AI 执行"管理插件"类操作

插件权限注册

第三方插件可以注册自己的权限码和角色。例如:

class MyPlugin(BasePlugin):
    async def on_load(self):
        await self.auth_service.register_permission(
            "myplugin.export", "导出数据", "myplugin"
        )

注册后的权限码会出现在角色管理页面,管理员可以将其分配给自定义角色。

注意事项

  • 内置角色的权限不可修改(但可以修改显示名)
  • 删除自定义角色会自动解除该角色与所有成员的绑定
  • 权限检查有缓存(512 条),修改角色权限后会自动清除
  • admin 角色使用 * 通配符,自动拥有所有权限(包括未来新增的)