- 切换数据库为PostgreSQL,更新依赖与配置 - 重构权限体系,使用sys_user/sys_role/sys_menu等新实体替代旧模型 - 移除旧的用户角色/权限/系统设置相关代码与实体 - 新增字典、菜单管理模块与基础CRUD接口 - 优化鉴权逻辑,基于菜单权限标识进行接口校验 - 前端同步更新API、路由与权限控制逻辑 - 删除冗余的v-permission指令与相关代码
2.9 KiB
2.9 KiB
Checklist - 系统管理与认证授权模块对齐新设计
数据库与配置检查
- server 已安装 pg / pg-hstore 依赖
- config.default.ts 使用 PostgreSQL(dialect=postgres、port 5432、database=xintong)
- database/db_init.sql 在 PostgreSQL 中执行成功
- 初始数据齐全:4 角色、11 条菜单(6 顶级 + 5 系统子菜单)、20 条字典、admin 账户、角色菜单绑定
- admin 账户密码为 admin123456(bcrypt hash 正确)
后端实体与接口检查
- 7 个系统域实体(sysUser/sysRole/sysUserRole/sysMenu/sysRoleMenu/sysDict/sysOperationLog)创建成功且表名正确
- 旧实体(user/role/userRole/permission/rolePermission/operationLog)已删除
- 登录接口基于 sys_user 校验,返回 userInfo/roles/menus
- 刷新 Token 与当前用户接口适配新模型
- RbacMiddleware 基于菜单 permission 标识鉴权,ADMIN 放行
- 用户管理接口字段为 realName/phone/email,返回不包含密码哈希
- 角色管理接口字段为 roleCode/roleName/sortOrder
- 角色菜单配置接口(/roles/:id/menus)读写 sys_role_menu 正确
- 菜单管理接口:菜单树查询与 CRUD 正常
- 数据字典接口:列表/类型筛选/CRUD 正常(修复 types() 的 PostgreSQL GROUP BY/ORDER BY SQL 问题)
- 操作日志接口与中间件使用新字段(user_id/module/action/method/params/ip/created_at)
- system.controller.ts / system.service.ts 已删除,无残留引用
前端检查
- api/auth.ts 返回类型含 realName/roles/menus
- api/user.ts、api/role.ts 字段更新,权限接口改为菜单接口
- api/menu.ts、api/dict.ts 新增,api/system.ts 已删除
- stores/permission.ts 管理用户信息与菜单树(login 完整写入 roles/menus)
- 侧边栏菜单由用户菜单树动态渲染(含图标、两级结构)
- 路由改为静态全量注册,守卫按菜单权限标识控制;未开发模块显示占位页(替代原动态路由注册方案,修复深层刷新跳登录问题)
- 设置页路由与菜单已移除
- 用户管理页字段为姓名/手机/邮箱
- 角色管理页权限配置为菜单树勾选
- 菜单管理页(树形表格 CRUD)可用
- 数据字典页(列表+类型筛选 CRUD)可用
- 操作日志页字段与筛选更新
- v-permission 指令及引用已移除
- views/settings 目录已删除
联调与边界检查
- admin 登录 → 仪表盘 → 系统管理各子页面全流程走通(含深层链接整页刷新)
- 业务员角色仅显示授权菜单,访问未授权接口返回 403(SALESMAN/WORKER 实测 403)
- 写操作自动记录操作日志且可查询
- 无菜单角色登录不报错,侧边栏仅显示仪表盘(WORKER 实测 menus=0)
- 删除被占用角色被拦截
- 重复用户名/角色编码校验生效
- yarn build(server/client)无 TypeScript 编译错误