权限管理详解
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 管理面板 → 角色管理 中:
- 点击「新建角色」
- 填写角色名称和显示名
- 勾选需要的权限码
- 保存
示例:创建"运营主管"角色
角色名: 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角色使用*通配符,自动拥有所有权限(包括未来新增的)