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; } /**