Skip to content

rfc(identity): 评估 sys_user 档案字段经引擎 hook 委托,放开 edit affordance #2784

Description

@os-zhuang

背景

sys_usermanagedBy:'better-auth',CRUD affordances 全关(ADR-0010:直接 ObjectQL 写入绕过哈希管线、不产 sys_account、破坏 session 一致性)。#2766 后所有写操作都有专用端点(create-user / set-user-password / import-users / ban 等),但纯档案字段(姓名等不碰凭据的列)的编辑仍不能走标准表单/data API,UI 一致性欠佳。

评估内容(ADR 级决策,先 RFC 后实现)

  1. 哪些字段可安全放开:候选 = namephone_number、image 等档案列;永不放开 = email(登录标识)、password/凭据、role/banned、全部 system-managed стamp 列(password_changed_atmust_change_passwordlocked_until 等)。
  2. 机制:ObjectQL before-update hook 做字段白名单过滤 + 必要时委托 better-auth internalAdapter.updateUser(session 缓存一致性);还是仅放开 edit affordance + 字段级 readonly 控制。
  3. /admin/import-users upsert 的 UPDATE_ALLOWED_FIELDS(PR feat(auth): 管理员直建用户 + 手机号登录 + sys_user 批量导入(#2766 V1/V1.5/V2) #2771)保持同一份白名单,避免两处漂移。
  4. 审计:hook 路径天然被 plugin-audit 捕获(相对专用端点的显式审计是个优势)。
  5. 风险面:放开写口子后 RLS/权限模型对 sys_user 行级更新的覆盖是否充分(谁能改谁的档案)。

产出:ADR + 决策;若通过,再立实现 issue。

相关

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions