feat(权限): 安装和配置 Spatie Permission 包
- 安装 spatie/laravel-permission 包(v6.24.1) - 发布配置文件和迁移文件 - 运行迁移创建权限表 - 在 User 模型中添加 HasRoles trait - 添加 isSuperAdmin 和 isAdmin 辅助方法 - 创建 PermissionSeeder 定义 45 个权限 - 创建 3 个预设角色(super-admin、admin、user) - 为角色分配相应权限 - 为第一个用户分配超级管理员角色
This commit is contained in:
@@ -269,140 +269,259 @@
|
||||
- [x] 15.4.3 测试JSON导入
|
||||
- [x] 15.4.4 测试批量导入
|
||||
|
||||
## 阶段五:权限和安全(优先级:中)
|
||||
## 阶段五:权限管理系统(优先级:高)
|
||||
|
||||
### 16. 权限策略实现
|
||||
- [ ] 16.1 创建SystemSettingPolicy
|
||||
- [ ] 16.1.1 实现viewAny权限
|
||||
- [ ] 16.1.2 实现update权限
|
||||
- [ ] 16.2 创建TerminalPolicy
|
||||
- [ ] 16.2.1 实现viewAny权限
|
||||
- [ ] 16.2.2 实现create权限
|
||||
- [ ] 16.2.3 实现update权限
|
||||
- [ ] 16.2.4 实现delete权限
|
||||
- [ ] 16.2.5 实现sync权限
|
||||
- [ ] 16.3 创建SopTemplatePolicy
|
||||
- [ ] 16.3.1 实现viewAny权限
|
||||
- [ ] 16.3.2 实现create权限
|
||||
- [ ] 16.3.3 实现update权限
|
||||
- [ ] 16.3.4 实现delete权限
|
||||
- [ ] 16.3.5 实现publish权限
|
||||
- [ ] 16.4 注册所有策略
|
||||
- [ ] 16.5 测试权限控制
|
||||
- [ ] 16.5.1 测试管理员权限
|
||||
- [ ] 16.5.2 测试普通用户权限
|
||||
- [ ] 16.5.3 测试特殊权限
|
||||
### 16. Spatie Permission 包安装和配置
|
||||
- [ ] 16.1 安装 Spatie Permission 包
|
||||
- [ ] 16.1.1 运行 composer require spatie/laravel-permission
|
||||
- [ ] 16.1.2 发布配置文件和迁移文件
|
||||
- [ ] 16.1.3 运行迁移创建权限表
|
||||
- [ ] 16.1.4 清除缓存
|
||||
- [ ] 16.2 配置 User 模型
|
||||
- [ ] 16.2.1 在 User 模型中添加 HasRoles trait
|
||||
- [ ] 16.2.2 配置守卫(guard)
|
||||
- [ ] 16.2.3 测试基本权限方法
|
||||
- [ ] 16.3 创建权限种子数据
|
||||
- [ ] 16.3.1 创建 PermissionSeeder
|
||||
- [ ] 16.3.2 定义所有功能模块的权限(45个权限)
|
||||
- [ ] 16.3.3 创建预设角色(super-admin、admin、user)
|
||||
- [ ] 16.3.4 为角色分配权限
|
||||
- [ ] 16.3.5 运行种子数据
|
||||
|
||||
### 17. 安全加固
|
||||
- [ ] 17.1 实现敏感配置加密
|
||||
- [ ] 17.1.1 创建加密服务
|
||||
- [ ] 17.1.2 在SystemSetting模型中集成
|
||||
- [ ] 17.1.3 更新表单字段类型
|
||||
- [ ] 17.2 实现操作确认
|
||||
- [ ] 17.2.1 为删除操作添加确认
|
||||
- [ ] 17.2.2 为发布操作添加确认
|
||||
- [ ] 17.2.3 为同步操作添加确认
|
||||
- [ ] 17.3 实现输入验证和过滤
|
||||
- [ ] 17.3.1 添加XSS过滤
|
||||
- [ ] 17.3.2 添加SQL注入防护
|
||||
- [ ] 17.3.3 添加文件上传验证
|
||||
- [ ] 17.4 测试安全功能
|
||||
- [ ] 17.4.1 测试加密存储
|
||||
- [ ] 17.4.2 测试操作确认
|
||||
- [ ] 17.4.3 测试输入验证
|
||||
### 17. 角色管理功能
|
||||
- [ ] 17.1 创建 RoleResource
|
||||
- [ ] 17.1.1 定义表格列(名称、守卫、权限数、用户数)
|
||||
- [ ] 17.1.2 添加搜索和筛选功能
|
||||
- [ ] 17.1.3 添加系统角色标识(super-admin不可删除)
|
||||
- [ ] 17.2 创建角色表单
|
||||
- [ ] 17.2.1 添加基本信息字段(名称、守卫)
|
||||
- [ ] 17.2.2 添加权限选择器(使用 CheckboxList,按模块分组)
|
||||
- [ ] 17.2.3 添加表单验证规则
|
||||
- [ ] 17.2.4 实现权限同步逻辑(使用 syncPermissions)
|
||||
- [ ] 17.3 实现角色删除保护
|
||||
- [ ] 17.3.1 检查角色是否为 super-admin
|
||||
- [ ] 17.3.2 检查角色是否有关联用户
|
||||
- [ ] 17.3.3 添加删除确认提示
|
||||
- [ ] 17.4 测试角色管理功能
|
||||
- [ ] 17.4.1 测试角色 CRUD 操作
|
||||
- [ ] 17.4.2 测试权限分配(syncPermissions)
|
||||
- [ ] 17.4.3 测试删除保护
|
||||
|
||||
### 18. 用户权限管理功能
|
||||
- [ ] 18.1 更新 UserResource
|
||||
- [ ] 18.1.1 添加角色分配字段(使用 Select,支持多选)
|
||||
- [ ] 18.1.2 添加分组关联字段
|
||||
- [ ] 18.1.3 添加直接权限配置 Section(使用 CheckboxList)
|
||||
- [ ] 18.1.4 显示用户的所有权限预览(角色权限+直接权限)
|
||||
- [ ] 18.2 实现用户权限保存逻辑
|
||||
- [ ] 18.2.1 使用 syncRoles 同步角色
|
||||
- [ ] 18.2.2 使用 syncPermissions 同步直接权限
|
||||
- [ ] 18.2.3 处理权限冲突(直接权限优先)
|
||||
- [ ] 18.3 创建权限预览组件
|
||||
- [ ] 18.3.1 使用 Placeholder 组件显示权限
|
||||
- [ ] 18.3.2 按模块分组显示
|
||||
- [ ] 18.3.3 标识权限来源(角色/直接授予)
|
||||
- [ ] 18.3.4 支持权限搜索
|
||||
- [ ] 18.4 测试用户权限功能
|
||||
- [ ] 18.4.1 测试角色分配(assignRole、syncRoles)
|
||||
- [ ] 18.4.2 测试直接权限配置(givePermissionTo、syncPermissions)
|
||||
- [ ] 18.4.3 测试权限检查(hasPermissionTo、can)
|
||||
|
||||
### 19. 权限策略实现
|
||||
- [ ] 19.1 DocumentPolicy(已部分实现,需完善)
|
||||
- [ ] 19.1.1 在 viewAny 中添加权限检查(document.viewAny)
|
||||
- [ ] 19.1.2 在 view 中添加权限检查(document.view)
|
||||
- [ ] 19.1.3 在 create 中添加权限检查(document.create)
|
||||
- [ ] 19.1.4 在 update 中添加权限检查(document.update)
|
||||
- [ ] 19.1.5 在 delete 中添加权限检查(document.delete)
|
||||
- [ ] 19.1.6 在 download 中添加权限检查(document.download)
|
||||
- [ ] 19.1.7 保留现有的分组访问控制逻辑
|
||||
- [ ] 19.2 SystemSettingPolicy
|
||||
- [ ] 19.2.1 实现 viewAny(system-setting.viewAny)
|
||||
- [ ] 19.2.2 实现 view(system-setting.view)
|
||||
- [ ] 19.2.3 实现 update(system-setting.update)
|
||||
- [ ] 19.3 ActivityLogPolicy
|
||||
- [ ] 19.3.1 实现 viewAny(activity-log.viewAny)
|
||||
- [ ] 19.3.2 实现 view(activity-log.view)
|
||||
- [ ] 19.3.3 实现 export(activity-log.export)
|
||||
- [ ] 19.4 TerminalPolicy(已部分实现,需完善)
|
||||
- [ ] 19.4.1 在所有方法中添加权限检查
|
||||
- [ ] 19.4.2 实现 sync 权限检查(terminal.sync)
|
||||
- [ ] 19.4.3 保留现有的管理员检查作为后备
|
||||
- [ ] 19.5 SopTemplatePolicy(已部分实现,需完善)
|
||||
- [ ] 19.5.1 在所有方法中添加权限检查
|
||||
- [ ] 19.5.2 实现 publish 权限检查(sop-template.publish)
|
||||
- [ ] 19.5.3 实现 archive 权限检查(sop-template.archive)
|
||||
- [ ] 19.5.4 保留现有的状态检查逻辑
|
||||
- [ ] 19.6 GroupPolicy
|
||||
- [ ] 19.6.1 实现 viewAny(group.viewAny)
|
||||
- [ ] 19.6.2 实现 view(group.view)
|
||||
- [ ] 19.6.3 实现 create(group.create)
|
||||
- [ ] 19.6.4 实现 update(group.update)
|
||||
- [ ] 19.6.5 实现 delete(group.delete,需检查关联文档)
|
||||
- [ ] 19.7 UserPolicy
|
||||
- [ ] 19.7.1 实现 viewAny(user.viewAny)
|
||||
- [ ] 19.7.2 实现 view(user.view)
|
||||
- [ ] 19.7.3 实现 create(user.create)
|
||||
- [ ] 19.7.4 实现 update(user.update)
|
||||
- [ ] 19.7.5 实现 delete(user.delete,不能删除自己)
|
||||
- [ ] 19.8 RolePolicy
|
||||
- [ ] 19.8.1 实现 viewAny(role.viewAny)
|
||||
- [ ] 19.8.2 实现 view(role.view)
|
||||
- [ ] 19.8.3 实现 create(role.create)
|
||||
- [ ] 19.8.4 实现 update(role.update)
|
||||
- [ ] 19.8.5 实现 delete(role.delete,super-admin 保护)
|
||||
- [ ] 19.9 策略注册
|
||||
- [ ] 19.9.1 在 AppServiceProvider 中注册所有策略
|
||||
- [ ] 19.9.2 配置策略自动发现
|
||||
|
||||
### 20. Filament 资源权限集成
|
||||
- [ ] 20.1 更新所有 Resource 的权限检查
|
||||
- [ ] 20.1.1 DocumentResource 集成权限(使用 can 方法)
|
||||
- [ ] 20.1.2 SystemSettingResource 集成权限
|
||||
- [ ] 20.1.3 ActivityLogResource 集成权限
|
||||
- [ ] 20.1.4 TerminalResource 集成权限
|
||||
- [ ] 20.1.5 SopTemplateResource 集成权限
|
||||
- [ ] 20.1.6 GroupResource 集成权限
|
||||
- [ ] 20.1.7 UserResource 集成权限
|
||||
- [ ] 20.1.8 RoleResource 集成权限
|
||||
- [ ] 20.2 实现导航菜单权限控制
|
||||
- [ ] 20.2.1 配置 Resource 的 shouldRegisterNavigation 方法
|
||||
- [ ] 20.2.2 使用 auth()->user()->can() 检查权限
|
||||
- [ ] 20.2.3 根据权限动态显示/隐藏菜单项
|
||||
- [ ] 20.3 实现操作按钮权限控制
|
||||
- [ ] 20.3.1 配置 Action 的 visible 方法
|
||||
- [ ] 20.3.2 使用 $this->can() 检查权限
|
||||
- [ ] 20.3.3 根据权限动态显示/隐藏按钮
|
||||
- [ ] 20.4 实现批量操作权限控制
|
||||
- [ ] 20.4.1 配置 BulkAction 的 visible 方法
|
||||
- [ ] 20.4.2 根据权限控制批量操作可用性
|
||||
- [ ] 20.5 实现中间件保护
|
||||
- [ ] 20.5.1 在路由中使用 permission 中间件
|
||||
- [ ] 20.5.2 在路由中使用 role 中间件
|
||||
- [ ] 20.5.3 测试未授权访问的重定向
|
||||
|
||||
### 21. 权限测试
|
||||
- [ ] 21.1 单元测试
|
||||
- [ ] 21.1.1 测试 User 模型的 HasRoles trait
|
||||
- [ ] 21.1.2 测试 hasPermissionTo 方法
|
||||
- [ ] 21.1.3 测试 hasRole 方法
|
||||
- [ ] 21.1.4 测试 assignRole 和 removeRole
|
||||
- [ ] 21.1.5 测试 givePermissionTo 和 revokePermissionTo
|
||||
- [ ] 21.1.6 测试权限缓存
|
||||
- [ ] 21.2 策略测试
|
||||
- [ ] 21.2.1 测试所有 Policy 的权限检查
|
||||
- [ ] 21.2.2 测试 super-admin 角色的完整权限
|
||||
- [ ] 21.2.3 测试 admin 角色的权限
|
||||
- [ ] 21.2.4 测试普通用户的权限限制
|
||||
- [ ] 21.2.5 测试直接权限覆盖角色权限
|
||||
- [ ] 21.3 集成测试
|
||||
- [ ] 21.3.1 测试角色分配后的权限生效
|
||||
- [ ] 21.3.2 测试权限撤销后的访问限制
|
||||
- [ ] 21.3.3 测试跨分组访问控制
|
||||
- [ ] 21.3.4 测试数据级权限过滤
|
||||
- [ ] 21.4 UI 测试
|
||||
- [ ] 21.4.1 测试菜单项权限控制
|
||||
- [ ] 21.4.2 测试操作按钮权限控制
|
||||
- [ ] 21.4.3 测试批量操作权限控制
|
||||
- [ ] 21.4.4 测试未授权访问的错误提示
|
||||
|
||||
## 阶段六:测试和优化(优先级:低)
|
||||
|
||||
### 18. 单元测试
|
||||
- [ ] 18.1 SystemSetting模型测试
|
||||
- [ ] 18.1.1 测试get方法
|
||||
- [ ] 18.1.2 测试set方法
|
||||
- [ ] 18.2 Terminal模型测试
|
||||
- [ ] 18.2.1 测试关联关系
|
||||
- [ ] 18.2.2 测试作用域
|
||||
- [ ] 18.3 SopTemplate模型测试
|
||||
- [ ] 18.3.1 测试关联关系
|
||||
- [ ] 18.3.2 测试状态转换
|
||||
- [ ] 18.4 Service类测试
|
||||
- [ ] 18.4.1 测试SystemSettingService
|
||||
- [ ] 18.4.2 测试TerminalSyncService
|
||||
- [ ] 18.4.3 测试SopTemplateService
|
||||
### 22. 单元测试
|
||||
- [ ] 22.1 SystemSetting模型测试
|
||||
- [ ] 22.1.1 测试get方法
|
||||
- [ ] 22.1.2 测试set方法
|
||||
- [ ] 22.2 Terminal模型测试
|
||||
- [ ] 22.2.1 测试关联关系
|
||||
- [ ] 22.2.2 测试作用域
|
||||
- [ ] 22.3 SopTemplate模型测试
|
||||
- [ ] 22.3.1 测试关联关系
|
||||
- [ ] 22.3.2 测试状态转换
|
||||
- [ ] 22.4 Service类测试
|
||||
- [ ] 22.4.1 测试SystemSettingService
|
||||
- [ ] 22.4.2 测试TerminalSyncService
|
||||
- [ ] 22.4.3 测试SopTemplateService
|
||||
|
||||
### 19. 功能测试
|
||||
- [ ] 19.1 系统设置功能测试
|
||||
- [ ] 19.1.1 测试配置保存
|
||||
- [ ] 19.1.2 测试配置读取
|
||||
- [ ] 19.2 操作日志功能测试
|
||||
- [ ] 19.2.1 测试日志记录
|
||||
- [ ] 19.2.2 测试日志筛选
|
||||
- [ ] 19.2.3 测试日志导出
|
||||
- [ ] 19.3 终端管理功能测试
|
||||
- [ ] 19.3.1 测试终端CRUD
|
||||
- [ ] 19.3.2 测试配置同步
|
||||
- [ ] 19.4 SOP模板功能测试
|
||||
- [ ] 19.4.1 测试模板CRUD
|
||||
- [ ] 19.4.2 测试步骤编辑
|
||||
- [ ] 19.4.3 测试模板发布
|
||||
- [ ] 19.4.4 测试导入导出
|
||||
### 23. 功能测试
|
||||
- [ ] 23.1 系统设置功能测试
|
||||
- [ ] 23.1.1 测试配置保存
|
||||
- [ ] 23.1.2 测试配置读取
|
||||
- [ ] 23.2 操作日志功能测试
|
||||
- [ ] 23.2.1 测试日志记录
|
||||
- [ ] 23.2.2 测试日志筛选
|
||||
- [ ] 23.2.3 测试日志导出
|
||||
- [ ] 23.3 终端管理功能测试
|
||||
- [ ] 23.3.1 测试终端CRUD
|
||||
- [ ] 23.3.2 测试配置同步
|
||||
- [ ] 23.4 SOP模板功能测试
|
||||
- [ ] 23.4.1 测试模板CRUD
|
||||
- [ ] 23.4.2 测试步骤编辑
|
||||
- [ ] 23.4.3 测试模板发布
|
||||
- [ ] 23.4.4 测试导入导出
|
||||
|
||||
### 20. 性能优化
|
||||
- [ ] 20.1 数据库优化
|
||||
- [ ] 20.1.1 添加必要索引
|
||||
- [ ] 20.1.2 优化查询语句
|
||||
- [ ] 20.1.3 实现Eager Loading
|
||||
- [ ] 20.2 缓存优化
|
||||
- [ ] 20.2.1 实现系统设置缓存
|
||||
- [ ] 20.2.2 实现终端状态缓存
|
||||
- [ ] 20.2.3 实现模板列表缓存
|
||||
- [ ] 20.3 前端优化
|
||||
- [ ] 20.3.1 实现Lazy Loading
|
||||
- [ ] 20.3.2 优化Monaco Editor加载
|
||||
- [ ] 20.3.3 优化图片加载
|
||||
- [ ] 20.4 性能测试
|
||||
- [ ] 20.4.1 测试日志查询性能
|
||||
- [ ] 20.4.2 测试终端列表性能
|
||||
- [ ] 20.4.3 测试模板编辑性能
|
||||
### 24. 性能优化
|
||||
- [ ] 24.1 数据库优化
|
||||
- [ ] 24.1.1 添加必要索引
|
||||
- [ ] 24.1.2 优化查询语句
|
||||
- [ ] 24.1.3 实现Eager Loading
|
||||
- [ ] 24.2 缓存优化
|
||||
- [ ] 24.2.1 实现系统设置缓存
|
||||
- [ ] 24.2.2 实现终端状态缓存
|
||||
- [ ] 24.2.3 实现模板列表缓存
|
||||
- [ ] 24.2.4 实现权限缓存
|
||||
- [ ] 24.3 前端优化
|
||||
- [ ] 24.3.1 实现Lazy Loading
|
||||
- [ ] 24.3.2 优化Monaco Editor加载
|
||||
- [ ] 24.3.3 优化图片加载
|
||||
- [ ] 24.4 性能测试
|
||||
- [ ] 24.4.1 测试日志查询性能
|
||||
- [ ] 24.4.2 测试终端列表性能
|
||||
- [ ] 24.4.3 测试模板编辑性能
|
||||
- [ ] 24.4.4 测试权限检查性能
|
||||
|
||||
## 阶段七:文档和部署(优先级:低)
|
||||
|
||||
### 21. 文档编写
|
||||
- [ ] 21.1 编写用户手册
|
||||
- [ ] 21.1.1 系统设置使用说明
|
||||
- [ ] 21.1.2 操作日志使用说明
|
||||
- [ ] 21.1.3 终端管理使用说明
|
||||
- [ ] 21.1.4 SOP模板使用说明
|
||||
- [ ] 21.2 编写开发文档
|
||||
- [ ] 21.2.1 API文档
|
||||
- [ ] 21.2.2 数据库设计文档
|
||||
- [ ] 21.2.3 部署文档
|
||||
- [ ] 21.3 编写测试文档
|
||||
- [ ] 21.3.1 测试用例文档
|
||||
- [ ] 21.3.2 测试报告模板
|
||||
### 25. 文档编写
|
||||
- [ ] 25.1 编写用户手册
|
||||
- [ ] 25.1.1 系统设置使用说明
|
||||
- [ ] 25.1.2 操作日志使用说明
|
||||
- [ ] 25.1.3 终端管理使用说明
|
||||
- [ ] 25.1.4 SOP模板使用说明
|
||||
- [ ] 25.1.5 权限管理使用说明
|
||||
- [ ] 25.2 编写开发文档
|
||||
- [ ] 25.2.1 API文档
|
||||
- [ ] 25.2.2 数据库设计文档
|
||||
- [ ] 25.2.3 部署文档
|
||||
- [ ] 25.2.4 权限系统架构文档
|
||||
- [ ] 25.3 编写测试文档
|
||||
- [ ] 25.3.1 测试用例文档
|
||||
- [ ] 25.3.2 测试报告模板
|
||||
|
||||
### 22. 部署准备
|
||||
- [ ] 22.1 准备生产环境配置
|
||||
- [ ] 22.1.1 更新.env.production
|
||||
- [ ] 22.1.2 配置队列服务
|
||||
- [ ] 22.1.3 配置缓存服务
|
||||
- [ ] 22.2 数据迁移准备
|
||||
- [ ] 22.2.1 准备迁移脚本
|
||||
- [ ] 22.2.2 准备回滚脚本
|
||||
- [ ] 22.2.3 准备种子数据
|
||||
- [ ] 22.3 部署到生产环境
|
||||
- [ ] 22.3.1 执行数据库迁移
|
||||
- [ ] 22.3.2 发布静态资源
|
||||
- [ ] 22.3.3 重启服务
|
||||
- [ ] 22.4 生产环境验证
|
||||
- [ ] 22.4.1 验证所有功能
|
||||
- [ ] 22.4.2 验证性能指标
|
||||
- [ ] 22.4.3 验证安全配置
|
||||
### 26. 部署准备
|
||||
- [ ] 26.1 准备生产环境配置
|
||||
- [ ] 26.1.1 更新.env.production
|
||||
- [ ] 26.1.2 配置队列服务
|
||||
- [ ] 26.1.3 配置缓存服务
|
||||
- [ ] 26.2 数据迁移准备
|
||||
- [ ] 26.2.1 准备迁移脚本
|
||||
- [ ] 26.2.2 准备回滚脚本
|
||||
- [ ] 26.2.3 准备种子数据
|
||||
- [ ] 26.3 部署到生产环境
|
||||
- [ ] 26.3.1 执行数据库迁移
|
||||
- [ ] 26.3.2 发布静态资源
|
||||
- [ ] 26.3.3 重启服务
|
||||
- [ ] 26.4 生产环境验证
|
||||
- [ ] 26.4.1 验证所有功能
|
||||
- [ ] 26.4.2 验证性能指标
|
||||
- [ ] 26.4.3 验证安全配置
|
||||
|
||||
## 任务统计
|
||||
|
||||
- 总任务数:22个主任务
|
||||
- 子任务数:约200+个子任务
|
||||
- 预计工作量:40-60工作日
|
||||
- 总任务数:26个主任务
|
||||
- 子任务数:约250+个子任务
|
||||
- 预计工作量:50-70工作日
|
||||
- 优先级分布:
|
||||
- 高优先级:阶段一、二(约30%)
|
||||
- 中优先级:阶段三、四、五(约50%)
|
||||
- 低优先级:阶段六、七(约20%)
|
||||
- 高优先级:阶段一、二、五(约40%)
|
||||
- 中优先级:阶段三、四(约35%)
|
||||
- 低优先级:阶段六、七(约25%)
|
||||
|
||||
Reference in New Issue
Block a user