Skip to content

[objectui] 记录表单渲染器需按 userActions.edit + 逐字段 readonly 渲染 managedBy 对象(ADR-0092 D4 配套) #2833

Closed

Description

@os-zhuang

背景

ADR-0092 D4 的框架侧(#2817 / PR #2832)已给 sys_user 加 userActions: { edit: true } 并对非档案字段做逐字段 readonly 治理。server 元数据正确(/api/v1/meta/object/sys_user 返回 userActions.edit=true、仅 name/image 的 readonly=false)。

问题(浏览器验证发现)

当前 vendored console(objectui @object-ui/console 14.3.0,framework 里 pin SHA 6fa8e6a)的记录表单渲染器把 protection.lock:'full' / managedBy:'better-auth' 对象的所有表单字段渲染为 readonly disabled —— 包括本应可编辑的 name/image。

现象(Setup → Users → 行菜单 Edit):

  • ✅ 行菜单出现 "Edit"(resolveCrudAffordances 正确解析了 userActions.edit)
  • ✅ Edit 表单只暴露 Name + Profile Image 两个字段(只读字段正确排除)
  • ❌ 但这两个字段的 <input> 带 readonly disabled 属性,无法输入 → affordance "可见但不可用"

DOM 证据:<input readonly disabled name="name" group="Identity" value="Dev Admin" schema="[object Object]">。字段 widget 的只读判定为 field.readonly || <form-level lock>;name 的 field.readonly=false,故是表单级/对象级的一刀切锁定(RecordFormPage 仅用 managedBy 渲染 badge,禁用逻辑在共享 widget 层)。

需求

记录表单渲染器应:当对象 userActions.edit === true 时,按逐字段 readonly 渲染,而非按 protection.lock / managedBy 对整个表单一刀切禁用。 protection.lock 是元数据保护(能否改 schema,ADR-0010),不应等同于记录数据只读。

联动

相关

Activity

  1. os-zhuang commented on Jul 11, 2026

    @os-zhuang
    ContributorAuthor

    已修复并合并:objectui #2395(ObjectForm 按 userActions.edit 逐字段 readonly 渲染,不再对 managed 对象一刀切禁用)已合并,并经 framework #2832 的 objectui:refresh(pin → 5da9905)vendored 进来。端到端验证:平台管理员在 Console 中可编辑 sys_user 的 name/image,email/role 只读。closes via #2832 / #2817。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions