权限管理详解

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

概述

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

内置角色

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

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

权限码一览

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

通讯录

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

IM 消息

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

成员与部门

权限码说明adminmanagermemberguest
members.view查看成员--
members.manage管理成员---
departments.view查看部门--
departments.manage管理部门---

插件与 Skill

权限码说明adminmanagermemberguest
plugins.view查看插件--
plugins.manage管理插件---
skills.view查看 Skill--
skills.manage管理 Skill---

通道与设置

权限码说明adminmanagermemberguest
channels.view查看通道--
channels.manage管理通道---
settings.view查看设置---
settings.manage管理设置---

运维

权限码说明adminmanagermemberguest
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 角色使用 * 通配符,自动拥有所有权限(包括未来新增的)