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

3.3 KiB

🔐 权限控制实施进度

已完成 (3/11 页面)

1. 核心权限系统

文件: lib/permissions.ts

  • 创建完整的 permissions 对象
  • 所有权限检查函数
  • 辅助函数
  • 类型定义

2. 首页

文件: app/page.tsx

  • 导入 permissions
  • "添加成员"按钮 → permissions.canCreate(role)

3. 成员列表页

文件: app/members/page.tsx

  • 导入 permissionscurrentTree
  • "新增成员"按钮 → permissions.canCreate(role)

4. 成员详情页

文件: app/members/[id]/page.tsx

  • 导入 permissionsLinkcurrentTree
  • 快速添加按钮(父母、子女、配偶)→ permissions.canCreate(role)
  • "编辑"按钮 → permissions.canUpdate(role)
  • "删除"按钮 → permissions.canDeleteMember(role)
  • "打印"和"分享"按钮对所有人可见

🚧 进行中 (1/11 页面)

5. 系统设置页 🚧

文件: app/settings/page.tsx

  • 需要添加权限控制的按钮:
    • 导出数据 → permissions.canExport(role)
    • 导入数据 → permissions.canImport(role)
    • 导出GEDCOM → permissions.canExport(role)
    • 导入GEDCOM → permissions.canImport(role)
    • 重置数据 → permissions.canClearData(role)

注意: 由于编辑错误,已回滚,需要重新实施


待实施 (7/11 页面)

6. 新增成员页

文件: app/members/new/page.tsx

  • 页面级权限检查
  • 无权限时重定向

7. 全局导航

文件: components/site-header.tsx

  • "删除家族树"按钮 → permissions.canDeleteTree(role)
  • "创建新家族树"按钮 → permissions.canCreateTree(role)

8. 族谱图页

文件: app/tree/page.tsx

  • 所有按钮都是查看功能,无需特殊权限

9. 关系计算页

文件: app/relationship/page.tsx

  • 所有按钮都是查询功能,无需特殊权限

10. 大事记页

文件: app/timeline/page.tsx

  • 所有按钮都是查看功能,无需特殊权限

11. 登录注册页

文件: app/auth/*

  • 无需权限控制

📊 统计

页面进度

  • 完成: 4/11 (36%)
  • 🚧 进行中: 1/11 (9%)
  • 待开始: 6/11 (55%)

按钮进度

  • 完成: ~15/80+ (19%)
  • 待更新: ~65/80+ (81%)

🎯 下一步行动

立即执行

  1. 重新实施系统设置页权限控制(小心编辑)
  2. 更新全局导航权限控制
  3. 添加新增成员页权限检查

今天完成

  1. 测试所有已实施的权限控制
  2. 验证三种角色的按钮显示

本周完成

  1. API 层面权限验证
  2. 完整测试
  3. 文档更新

💡 经验教训

编辑技巧

  1. 一次只编辑一个小块
  2. 使用 read_file 确认内容
  3. 精确匹配 old_string
  4. ⚠️ 避免使用 multi_edit 进行复杂编辑
  5. ⚠️ 编辑出错时立即回滚

权限实施模式

// 标准模式
import { permissions } from "@/lib/permissions"

const { currentTree } = useFamily()
const role = currentTree?.currentUserRole

{permissions.canCreate(role) && <Button>添加</Button>}
{permissions.canUpdate(role) && <Button>编辑</Button>}
{permissions.canDeleteMember(role) && <Button>删除</Button>}

最后更新: 2025-11-23 17:45
当前状态: 🚧 进行中
完成度: 36%