权限模型详解

权限模型详解

M-Doc 的权限体系包含组织角色、文档可见性和 API Scope 三个维度。


组织角色权限矩阵

操作 Owner Admin Member Guest
删除组织
转让组织
修改组织设置
管理成员
创建文档
编辑文档
删除文档
查看 org 文档
查看 private 文档

private 文档仅创建者本人可见。

文档可见性

可见性 未登录用户 组织外用户 Guest Member+
public
org
private

API Scope 权限

OpenAPI 接口通过 Scope 控制访问权限:

Scope 可访问的接口
read:documents 文档列表、文档详情
read:articles 文章树、文章详情、目录清单、文章内容、语义搜索
write:articles 创建文章、更新文章、删除文章、发布文章
admin:all 以上所有(通配权限)

PAT vs API Key

特性 PAT API Key
Scope 限制 受限于创建时选择的 Scope 无限制(拥有全部权限)
认证方式 Bearer Token AWS Signature V4
适用场景 脚本、CI/CD、AI 工具 服务端集成

权限检查流程

对于 OpenAPI 请求,权限检查按以下优先级:

1. UnifiedAuthMiddleware:识别认证类型(PAT / API Key)
    ↓
2. PAT → 验证 Token → 检查 Scope
   API Key → 验证签名 → 跳过 Scope(全权限)
    ↓
3. 设置 user_id 到请求上下文
    ↓
4. 控制器获取 user_id,执行业务权限检查

对于内部 API 请求(/api/*):

1. AuthMiddleware:验证 JWT Token
    ↓
2. 设置 user_id 到请求上下文
    ↓
3. 控制器/Service 检查组织角色和文档权限