TanWenyan
|
d3418ef31b
|
fix: 修复权限映射的反向保存逻辑
问题:权限映射只在显示层面进行,但保存时还需要反向映射回数据库权限键
解决方案:
1. 分离显示权限和原始权限:
- originalRoutePermissionsMap:存储未映射的原始权限(用于保存)
- routePermissionsMap:存储映射后的权限(用于显示)
- originalAllPermissions:存储所有原始权限的列表
2. 加载角色权限时:
- 从API获取角色已分配的权限ID(原始ID)
- 直接存储到 selectedPermissionIds
- 不做任何映射转换
3. 显示权限列表时:
- 从原始权限构建映射后的权限(合并相同的)
- 用户看到的就是映射后的权限(如dify:dataset:manage)
- 但勾选状态基于原始权限ID
4. 保存权限时:
- 直接使用 selectedPermissionIds(原始ID)
- 无需反向映射
验证方式:
1. 取消勾选 dify:dataset:manage → 数据库中4个bind权限被DENY → 接口返回403
2. 重新勾选 dify:dataset:manage → 数据库中4个bind权限被GRANT → 接口可访问
|
2025-12-08 15:39:39 +08:00 |
|