Skip to content

bug(knowledge-network): 普通用户卡片菜单删除/编辑未按权限隐藏 #321

Description

@lbb1656

问题描述

普通用户打开「业务知识网络」列表时,卡片「…」菜单中的删除(以及编辑)始终可见且可点,未按权限置灰/隐藏。

环境:https://14.103.77.23/
账号:liberly(仅 normal_user

关联:与 bkn-foundry#572(角色通配过宽)相关但非同一问题——本 issue 聚焦前端未按对象操作权限门禁。

复现步骤

  1. liberly 登录 Studio。
  2. 进入业务知识网络列表。
  3. 打开任一卡片右上角「…」菜单。
  4. 实际结果:删除、编辑始终可点(未置灰)。
  5. 期望结果:无 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

建议修复

  1. record.operations(或 scoped 权限)过滤卡片菜单:无 modify 隐藏编辑,无 delete 隐藏删除。
  2. 必要时对创建/导入等入口继续用模块级 PermissionGate
  3. 若依赖 operations 字段:同步核对 bkn-backend FilterResources 是否回填完整 allow ops(可另开 foundry issue)。

验收标准

  • delete 权限的普通用户:卡片菜单不出现可点的删除项。
  • modify 权限:不出现可点的编辑项。
  • 仅对已对象授权 delete 的 KN 显示删除,且删除成功;未授权实例删除被拒绝且 UI 不诱导点击。
  • 有权限用户行为不变。

参考代码

  • bkn-studio/src/modules/knowledge-network/components/network/KnowledgeNetworkCard.tsx
  • bkn-studio/src/modules/knowledge-network/scenes/KnowledgeNetworkListScene.tsx

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions