Files
chinese-family-tree-2/PERMISSIONS_QUICK_REFERENCE.md
T
freedakgmail e44dd0bd95 0.0.8.0
2025-11-23 18:03:04 +08:00

200 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔐 权限快速参考
## 📋 按钮分类
### 增删改类按钮(写操作)
#### ✏️ 增加类
```
添加成员 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+ 个 | **权限**: 只读
**可以做**:
- ✅ 查看所有信息
- ✅ 搜索和筛选
- ✅ 关系查询
- ✅ 导出和打印
- ✅ 视图控制
**不能做**:
- ❌ 任何增删改操作
- ❌ 导入数据
- ❌ 管理操作
---
## 💻 代码实现
### 权限检查函数
```typescript
// 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,
}
```
### 使用示例
```tsx
// 条件渲染(推荐)
{permissions.canCreate(role) && (
<Button></Button>
)}
{permissions.canDeleteTree(role) && (
<Button variant="destructive"></Button>
)}
// 禁用状态
<Button disabled={!permissions.canUpdate(role)}>
</Button>
```
---
## 📊 权限矩阵
| 操作 | OWNER | EDITOR | VIEWER |
|-----|-------|--------|--------|
| 查看 | ✅ | ✅ | ✅ |
| 搜索 | ✅ | ✅ | ✅ |
| 导出 | ✅ | ✅ | ✅ |
| 增加 | ✅ | ✅ | ❌ |
| 编辑 | ✅ | ✅ | ❌ |
| 删除成员 | ✅ | ✅ | ❌ |
| 删除树 | ✅ | ❌ | ❌ |
| 管理协作 | ✅ | ❌ | ❌ |
| 清空数据 | ✅ | ❌ | ❌ |
---
## 🔍 快速查找
### 仅 OWNER5个按钮)
1. 删除家族树
2. 邀请协作者
3. 移除协作者
4. 清空数据
5. 清空日志
### OWNER + EDITOR25个按钮)
- 所有增加按钮(8个)
- 所有编辑按钮(5个)
- 删除成员(1个)
- 导入操作(2个)
- 其他编辑操作(9个)
### 所有角色(30个按钮)
- 查看按钮(6个)
- 搜索按钮(5个)
- 导出按钮(4个)
- 视图控制(5个)
- 导航按钮(10个)