问题描述
普通用户打开「业务知识网络」列表时,卡片「…」菜单中的删除(以及编辑)始终可见且可点,未按权限置灰/隐藏。
环境:https://14.103.77.23/
账号:liberly(仅 normal_user)
关联:与 bkn-foundry#572(角色通配过宽)相关但非同一问题——本 issue 聚焦前端未按对象操作权限门禁。
复现步骤
- 以
liberly 登录 Studio。
- 进入业务知识网络列表。
- 打开任一卡片右上角「…」菜单。
- 实际结果:删除、编辑始终可点(未置灰)。
- 期望结果:无
delete/modify 权限时菜单项隐藏或禁用;仅对象授权具备对应操作时可见。
根因分析
KnowledgeNetworkCard 将 view/edit/export/delete 写死进下拉项,未使用 PermissionGate,也未读取 record.operations:
bkn-studio/src/modules/knowledge-network/components/network/KnowledgeNetworkCard.tsx
- 列表场景直接传入
onDelete={openDelete},无权限分支:KnowledgeNetworkListScene.tsx
后端侧补充(便于验收):
liberly 角色对 KN 仅 view_detail + data_query。
- 对
ecommerce_ops_bkn_public 另有对象级 modify/delete/authorize/task_manage;点删该实例可能成功,其余应收 403。
- 列表/详情返回的
operations 目前多为 ["view_detail"](Filter 以 view_detail 为主,完整允许操作未可靠回填),前端即便读 operations 也需与 scoped /me/permissions 或 Filter 回填对齐。
影响范围
| 组件 |
影响 |
| Studio 知识网络列表卡片 |
无删权用户仍看到可点删除/编辑 |
| 误操作风险 |
有对象删权的实例可被直接删除;无删权实例点删后依赖后端 403 |
建议修复
- 按
record.operations(或 scoped 权限)过滤卡片菜单:无 modify 隐藏编辑,无 delete 隐藏删除。
- 必要时对创建/导入等入口继续用模块级
PermissionGate。
- 若依赖
operations 字段:同步核对 bkn-backend FilterResources 是否回填完整 allow ops(可另开 foundry issue)。
验收标准
参考代码
bkn-studio/src/modules/knowledge-network/components/network/KnowledgeNetworkCard.tsx
bkn-studio/src/modules/knowledge-network/scenes/KnowledgeNetworkListScene.tsx
问题描述
普通用户打开「业务知识网络」列表时,卡片「…」菜单中的删除(以及编辑)始终可见且可点,未按权限置灰/隐藏。
环境:
https://14.103.77.23/账号:
liberly(仅normal_user)关联:与 bkn-foundry#572(角色通配过宽)相关但非同一问题——本 issue 聚焦前端未按对象操作权限门禁。
复现步骤
liberly登录 Studio。delete/modify权限时菜单项隐藏或禁用;仅对象授权具备对应操作时可见。根因分析
KnowledgeNetworkCard将 view/edit/export/delete 写死进下拉项,未使用PermissionGate,也未读取record.operations:bkn-studio/src/modules/knowledge-network/components/network/KnowledgeNetworkCard.tsxonDelete={openDelete},无权限分支:KnowledgeNetworkListScene.tsx后端侧补充(便于验收):
liberly角色对 KN 仅view_detail+data_query。ecommerce_ops_bkn_public另有对象级modify/delete/authorize/task_manage;点删该实例可能成功,其余应收 403。operations目前多为["view_detail"](Filter 以view_detail为主,完整允许操作未可靠回填),前端即便读operations也需与 scoped/me/permissions或 Filter 回填对齐。影响范围
建议修复
record.operations(或 scoped 权限)过滤卡片菜单:无modify隐藏编辑,无delete隐藏删除。PermissionGate。operations字段:同步核对 bkn-backendFilterResources是否回填完整 allow ops(可另开 foundry issue)。验收标准
delete权限的普通用户:卡片菜单不出现可点的删除项。modify权限:不出现可点的编辑项。delete的 KN 显示删除,且删除成功;未授权实例删除被拒绝且 UI 不诱导点击。参考代码
bkn-studio/src/modules/knowledge-network/components/network/KnowledgeNetworkCard.tsxbkn-studio/src/modules/knowledge-network/scenes/KnowledgeNetworkListScene.tsx