5.0 KiB
5.0 KiB
🔐 权限快速参考
📋 按钮分类
增删改类按钮(写操作)
✏️ 增加类
添加成员 OWNER ✅ EDITOR ✅ VIEWER ❌
新增成员 OWNER ✅ EDITOR ✅ VIEWER ❌
添加父亲 OWNER ✅ EDITOR ✅ VIEWER ❌
添加母亲 OWNER ✅ EDITOR ✅ VIEWER ❌
添加子女 OWNER ✅ EDITOR ✅ VIEWER ❌
添加配偶 OWNER ✅ EDITOR ✅ VIEWER ❌
创建家族树 OWNER ✅ EDITOR ✅ VIEWER ❌
邀请协作者 OWNER ✅ EDITOR ❌ VIEWER ❌ ⚠️ 仅创建者
📝 修改类
编辑 OWNER ✅ EDITOR ✅ VIEWER ❌
保存 OWNER ✅ EDITOR ✅ VIEWER ❌
导入数据 OWNER ✅ EDITOR ✅ VIEWER ❌
导入GEDCOM OWNER ✅ EDITOR ✅ VIEWER ❌
修改密码 OWNER ✅ EDITOR ✅ VIEWER ✅ ⚠️ 修改自己的密码
🗑️ 删除类
删除成员 OWNER ✅ EDITOR ✅ VIEWER ❌
删除家族树 OWNER ✅ EDITOR ❌ VIEWER ❌ ⚠️ 仅创建者
移除协作者 OWNER ✅ EDITOR ❌ VIEWER ❌ ⚠️ 仅创建者
清空数据 OWNER ✅ EDITOR ❌ VIEWER ❌ ⚠️ 仅创建者
清空日志 OWNER ✅ EDITOR ❌ VIEWER ❌ ⚠️ 仅创建者
查类按钮(读操作)
👁️ 查看类
查看详情 OWNER ✅ EDITOR ✅ VIEWER ✅
查看全部 OWNER ✅ EDITOR ✅ VIEWER ✅
查看族谱图 OWNER ✅ EDITOR ✅ VIEWER ✅
查看大事记 OWNER ✅ EDITOR ✅ VIEWER ✅
查看时间线 OWNER ✅ EDITOR ✅ VIEWER ✅
查看迁徙记录 OWNER ✅ EDITOR ✅ VIEWER ✅
🔍 搜索查询类
搜索 OWNER ✅ EDITOR ✅ VIEWER ✅
筛选 OWNER ✅ EDITOR ✅ VIEWER ✅
关系查询 OWNER ✅ EDITOR ✅ VIEWER ✅
计算关系 OWNER ✅ EDITOR ✅ VIEWER ✅
在族谱图中定位 OWNER ✅ EDITOR ✅ VIEWER ✅
📤 导出类
导出数据 OWNER ✅ EDITOR ✅ VIEWER ✅
导出GEDCOM OWNER ✅ EDITOR ✅ VIEWER ✅
导出图片 OWNER ✅ EDITOR ✅ VIEWER ✅
打印 OWNER ✅ EDITOR ✅ VIEWER ✅
🎛️ 视图控制类
放大 OWNER ✅ EDITOR ✅ VIEWER ✅
缩小 OWNER ✅ EDITOR ✅ VIEWER ✅
重置 OWNER ✅ EDITOR ✅ VIEWER ✅
切换视图 OWNER ✅ EDITOR ✅ VIEWER ✅
🎯 角色权限总结
🔴 OWNER(创建者)
可用按钮: 80+ 个 | 权限: 全部
独有权限(只有创建者可以):
- ❌ 删除家族树
- ❌ 邀请协作者
- ❌ 移除协作者
- ❌ 清空数据
- ❌ 清空日志
🟡 EDITOR(编辑者)
可用按钮: 60+ 个 | 权限: 编辑
可以做:
- ✅ 增加成员(所有类型)
- ✅ 编辑成员信息
- ✅ 删除成员
- ✅ 导入数据
- ✅ 所有查看和查询操作
不能做:
- ❌ 删除家族树
- ❌ 邀请/移除协作者
- ❌ 清空数据
🟢 VIEWER(查看者)
可用按钮: 30+ 个 | 权限: 只读
可以做:
- ✅ 查看所有信息
- ✅ 搜索和筛选
- ✅ 关系查询
- ✅ 导出和打印
- ✅ 视图控制
不能做:
- ❌ 任何增删改操作
- ❌ 导入数据
- ❌ 管理操作
💻 代码实现
权限检查函数
// lib/permissions.ts
export const permissions = {
canCreate: (role) => role === "OWNER" || role === "EDITOR",
canUpdate: (role) => role === "OWNER" || role === "EDITOR",
canDeleteMember: (role) => role === "OWNER" || role === "EDITOR",
canDeleteTree: (role) => role === "OWNER",
canManageCollaborators: (role) => role === "OWNER",
canClearData: (role) => role === "OWNER",
canView: (role) => true,
canExport: (role) => true,
}
使用示例
// 条件渲染(推荐)
{permissions.canCreate(role) && (
<Button>添加成员</Button>
)}
{permissions.canDeleteTree(role) && (
<Button variant="destructive">删除家族树</Button>
)}
// 禁用状态
<Button disabled={!permissions.canUpdate(role)}>
编辑
</Button>
📊 权限矩阵
| 操作 | OWNER | EDITOR | VIEWER |
|---|---|---|---|
| 查看 | ✅ | ✅ | ✅ |
| 搜索 | ✅ | ✅ | ✅ |
| 导出 | ✅ | ✅ | ✅ |
| 增加 | ✅ | ✅ | ❌ |
| 编辑 | ✅ | ✅ | ❌ |
| 删除成员 | ✅ | ✅ | ❌ |
| 删除树 | ✅ | ❌ | ❌ |
| 管理协作 | ✅ | ❌ | ❌ |
| 清空数据 | ✅ | ❌ | ❌ |
🔍 快速查找
仅 OWNER(5个按钮)
- 删除家族树
- 邀请协作者
- 移除协作者
- 清空数据
- 清空日志
OWNER + EDITOR(25个按钮)
- 所有增加按钮(8个)
- 所有编辑按钮(5个)
- 删除成员(1个)
- 导入操作(2个)
- 其他编辑操作(9个)
所有角色(30个按钮)
- 查看按钮(6个)
- 搜索按钮(5个)
- 导出按钮(4个)
- 视图控制(5个)
- 导航按钮(10个)