删除用户会留下他们的文档锁和偏好设置(Postgres):无所有者的锁会导致编辑视图崩溃
作者: mishery97创建于 2026年9月17日更新于 2026年9月17日
标签db: postgresBug
描述臭虫
在 Postgres 上,删除一个用户( 认证收藏文档) 留下了两种行后, 其中一种会撞倒每个人的管理员 。
- **被删除用户拥有的文件锁从未被取出,无主的锁将编辑视图空白。 **
活口-锁入-documents rels. uses id'是ON DELETE级联',因此,删除时会空出给用户取名但留下父的活口-锁入-documents'行,没有用户'。 打开该文件后,将“get IsLocked”改为“docs[0].user?.value?”并将未定义的'改为extractID',因为Orid.id'=TypeError:无法读取未定义的属性(读取'id')'。 编辑视图使每个用户处于空白状态,直到锁通过“lockDocuments.duration”(默认为5分钟)。 在删除了打开的管理员后, 我们在一个站点设置上点击它 。 - ** 删除的用户首选从未删除。 ** 两种叫作
删除用户首选 ' 的删除操作都删除了用户行。 它的查询(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".
- 创建两个管理员用户,A和B。
- 作为用户B,打开任何文档的编辑视图(一个全局的作品也一样)并保持开放,因此存在"用户"=B的锁行.
- 作为用户A,删除用户B(单删除或列表视图的批量删除).
- 作为用户A,在5分钟内将文档从第2步中打开 — 空白编辑视图,服务器日志:
TypeError:无法从getIsLocked'读取未定义(读取'id')的属性'。 - 请检查各表: " 活口-锁口-多文件 " 仍有一行(用户没有 " 活口-锁口-多文件-rels " 一行), " 活口-偏好 " 有每行B。
3.8.6.0(安装)通过绕过我们工作回钩的集成试验得到确认;3.8.9.0和 " main " 的编码相同。
• 预期行为
删除一个用户会删除他们拥有的锁和他们的喜好,他们拥有的打开的文档会保持可编辑性.
实际行为
锁和偏好比用户长;无主锁扔入“getIsLocked”并给每个人空白文件,直到“lockDocuments.duration”。
. . . . . . .
内容来源: payloadcms/payload