Files
andyesfly 0a8103f33d refactor: 系统权限模块重构,迁移至PostgreSQL并对齐新设计
- 切换数据库为PostgreSQL,更新依赖与配置
- 重构权限体系,使用sys_user/sys_role/sys_menu等新实体替代旧模型
- 移除旧的用户角色/权限/系统设置相关代码与实体
- 新增字典、菜单管理模块与基础CRUD接口
- 优化鉴权逻辑,基于菜单权限标识进行接口校验
- 前端同步更新API、路由与权限控制逻辑
- 删除冗余的v-permission指令与相关代码
2026-08-19 14:11:34 +08:00

2.9 KiB
Raw Permalink Blame History

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 编译错误