图例说明
airsky 总索引 | 权限体系分析 索引
用于解释 总览、流程拆解 中各图的元素与权限术语。
流程图图例
| 元素 | 含义 |
|---|
| 矩形节点 | 一个校验步骤或处理动作 |
{菱形} | 判定分支(是/否) |
| 实线箭头 | 流程走向,箭头上文字为分支条件 |
| 「理想态 / 实际态」标注 | 区分设计应有行为与当前代码实际行为 |
权限标识规范
格式:模块:资源:动作,例如:
| 示例标识 | 含义 |
|---|
crm:customer:list | CRM 模块 客户资源 列表权限 |
analytics:sales:list | 经营看板 销售分析 查看权限 |
communication:channels:bind_self | 沟通渠道 绑定本人账号权限 |
*:*:* | 超级管理员通配,放行一切 |
角色层级
| 角色 | tenant_id | 说明 |
|---|
| 平台超管 super_admin | 0 | 拥有 *:*:*,放行一切 |
| 平台普通角色(如审计员) | 0 | 按 sys_role_menu 归纳权限点校验 |
| 租户管理员 tenant_admin | >0 | 跳过角色级权限判定,但受租户菜单授权约束 |
| 租户普通用户 | >0 | 走完整「租户授权 ∩ 角色授权」校验 |
data_scope 取值(数据权限)
| 值 | 范围 | 过滤条件 |
|---|
| 1 | 全部数据 | 仅 tenant_id(由 TenantScope 保证) |
| 2 | 自定义部门 | dept_id IN (授权部门列表) |
| 3 | 本部门 | dept_id = 当前用户.dept_id |
| 4 | 本部门及以下 | dept_id IN (部门子树) |
| 5 | 仅本人 | ownerField = 当前用户.id |
数值越小权限越大;多角色取最大范围(最小值)。
关键代码锚点对照
| 能力 | 文件位置 |
|---|
| 功能权限中间件 | middleware/permission.go:13 |
| 权限核心判定 | utils/rbac/permission.go:266 |
| 菜单交集计算 | utils/rbac/permission.go:194 |
| 数据权限过滤 | middleware/data_scope.go:18 |
| 功能开关 | middleware/feature_guard.go:39 |
| 前端权限指令 | directive/auth/permission.ts:8 |
| 未使用的缓存 key | constant/cache_key.go:8 |