百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#18200·payload

删除用户会留下他们的文档锁和偏好设置(Postgres):无所有者的锁会导致编辑视图崩溃

作者: mishery97创建于 2026年9月17日更新于 2026年9月17日
标签db: postgresBug

描述臭虫

在 Postgres 上,删除一个用户( 认证收藏文档) 留下了两种行后, 其中一种会撞倒每个人的管理员 。

  1. **被删除用户拥有的文件锁从未被取出,无主的锁将编辑视图空白。 **活口-锁入-documents rels. uses id'是ON DELETE级联',因此,删除时会空出给用户取名但留下父的活口-锁入-documents'行,没有用户'。 打开该文件后,将“get IsLocked”改为“docs[0].user?.value?”并将未定义的'改为extractID',因为Orid.id'=TypeError:无法读取未定义的属性(读取'id')'。 编辑视图使每个用户处于空白状态,直到锁通过“lockDocuments.duration”(默认为5分钟)。 在删除了打开的管理员后, 我们在一个站点设置上点击它 。
  2. ** 删除的用户首选从未删除。 ** 两种叫作删除用户首选 ' 的删除操作都删除了用户行。 它的查询(user.value in ids')是通过活口-参考-rels'进行的,其users-id'排出级联,因此没有匹配。 偏好行会累积(我们的一个小地点有67个)。

操作既不删除用户拥有的锁 * : “ checkDocumentLockStatus” 只清除正在删除的文档 * 上的锁 。

QQ 链接到代码路径

在 " 3.x " (标题 " Be896e3ee " ,2026年9月14日;自8月1日以来没有变化):

  • " 包装/后期/sc/views/Document/getIsLocked.ts " 第105-108行 -- -- " 包装/负载/src/用量/摘录.ts " 第8行
  • " 包装/活口/收集/操作/删除ByID.ts " : " db.delete One " 第186行, " 删除用户优先 " 第205行
  • " 包装/装卸/电弧/收集/操作/删除 " :219和332行

在主要'方面,同一编码在packages/ui/src/useities/getIsLocked.ts'。

  • 复制步骤

Postgres适配器,默认为"lockDocuments".

  1. 创建两个管理员用户,A和B。
  2. 作为用户B,打开任何文档的编辑视图(一个全局的作品也一样)并保持开放,因此存在"用户"=B的锁行.
  3. 作为用户A,删除用户B(单删除或列表视图的批量删除).
  4. 作为用户A,在5分钟内将文档从第2步中打开 — 空白编辑视图,服务器日志:TypeError:无法从getIsLocked'读取未定义(读取'id')的属性'。
  5. 请检查各表: " 活口-锁口-多文件 " 仍有一行(用户没有 " 活口-锁口-多文件-rels " 一行), " 活口-偏好 " 有每行B。

3.8.6.0(安装)通过绕过我们工作回钩的集成试验得到确认;3.8.9.0和 " main " 的编码相同。

• 预期行为

删除一个用户会删除他们拥有的锁和他们的喜好,他们拥有的打开的文档会保持可编辑性.

实际行为

锁和偏好比用户长;无主锁扔入“getIsLocked”并给每个人空白文件,直到“lockDocuments.duration”。

. . . . . . .

内容来源: payloadcms/payload

查看 GitHub 原文在 GitHub 查看讨论