From ef7faf516d19eccc769a2c20c16e6fcb43bdcb09 Mon Sep 17 00:00:00 2001 From: pawelpawlik Date: Fri, 28 Aug 2026 08:58:40 +0200 Subject: [PATCH] =?UTF-8?q?IBX-12283:=20Added=20isVersionCreator=20check?= =?UTF-8?q?=20in=20OwnerLimitationType,=20so=20that=20user(with=20Content/?= =?UTF-8?q?Versionremove=20owner=20limitation=20set=20on=20=E2=80=98self?= =?UTF-8?q?=E2=80=99)=20can=20delete=20drafts=20that=20they=20created.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/Limitation/OwnerLimitationType.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/Limitation/OwnerLimitationType.php b/src/lib/Limitation/OwnerLimitationType.php index 677fce4a8e..5534b836fe 100644 --- a/src/lib/Limitation/OwnerLimitationType.php +++ b/src/lib/Limitation/OwnerLimitationType.php @@ -124,9 +124,12 @@ public function evaluate(APILimitationValue $value, APIUserReference $currentUse ); } + $versionCreatorId = null; if ($object instanceof Content) { + $versionCreatorId = $object->getVersionInfo()->creatorId; $object = $object->getVersionInfo()->getContentInfo(); } elseif ($object instanceof VersionInfo) { + $versionCreatorId = $object->creatorId; $object = $object->getContentInfo(); } elseif (!$object instanceof ContentInfo && !$object instanceof ContentCreateStruct) { throw new InvalidArgumentException( @@ -141,9 +144,10 @@ public function evaluate(APILimitationValue $value, APIUserReference $currentUse * @var $object ContentInfo */ $isOwner = $object->ownerId === $userId; + $isVersionCreator = $versionCreatorId !== null && $versionCreatorId === $userId; $isSelf = $object instanceof ContentInfo && $object->id === $userId; - return $isOwner || $isSelf; + return $isOwner || $isVersionCreator || $isSelf; } /**