Skip to content

[plugin-detail] 相关列表分区不按当前用户对子对象读权限过滤(can(read) 未接线) #2359

Description

@baozhoutao

概述

记录详情页「相关」区对每个主从子对象渲染一个相关列表分区(表头 + grid + 新建按钮),只看主从关系是否存在,不看当前用户对子对象的读权限。结果:用户对某子表无任何权限(读 403),控制台仍显示该分区——数据读取被拒后显示「暂无相关记录」,点「新建」保存时 403。

数据安全不受影响(对象级权限严格生效),纯 UI/DX 问题。

复现(报价单分工填写)

报价单 5 张子表按分工授权给 3 个角色。以仅授权 1 张子表的角色登录,打开报价:数据层正确隔离(无权子表读 403、0 条),但 UI 层 5 张分区全部渲染(含新建按钮)。

定位

  • packages/app-shell/src/.../deriveRelatedLists.ts:98-126 —— 派生相关列表只看 FK,无读权限判断
  • packages/plugin-detail/src/renderers/record-related-list.tsx:95-109 —— 唯一权限门是 opt-in 静态 requiredPermissions,无自动 can(read)
  • 平台已有 can(object,'read')(permissions/usePermissions.ts:47)未接线到相关列表渲染。

期望(二选一)

  1. 渲染相关分区时按当前用户对子对象的 allowRead 过滤:无读权限则整块不渲染;
  2. 给相关列表配置加 visibleWhen / 权限条件。

来源(项目 dogfood):steedos-labs/os-tianshun-mtc#37

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions