From: Joas Schilling Date: Wed, 7 Sep 2016 09:10:48 +0000 (+0200) Subject: Only require CREATE permissions when the file does not exist yet X-Git-Tag: v11.0RC2~656^2~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4c0665b6ecff6e056de9020ee5d78b73a60134d1;p=nextcloud-server.git Only require CREATE permissions when the file does not exist yet --- diff --git a/apps/dav/lib/Connector/Sabre/ObjectTree.php b/apps/dav/lib/Connector/Sabre/ObjectTree.php index e872ea58279..9f6eb8a85b0 100644 --- a/apps/dav/lib/Connector/Sabre/ObjectTree.php +++ b/apps/dav/lib/Connector/Sabre/ObjectTree.php @@ -205,7 +205,11 @@ class ObjectTree extends \Sabre\DAV\Tree { $infoDestination = $this->fileView->getFileInfo(dirname($destinationPath)); $infoSource = $this->fileView->getFileInfo($sourcePath); - $destinationPermission = $infoDestination && $infoDestination->isUpdateable(); + if ($this->fileView->file_exists($destinationPath)) { + $destinationPermission = $infoDestination && $infoDestination->isUpdateable(); + } else { + $destinationPermission = $infoDestination && $infoDestination->isCreatable(); + } $sourcePermission = $infoSource && $infoSource->isDeletable(); if (!$destinationPermission || !$sourcePermission) { @@ -298,7 +302,12 @@ class ObjectTree extends \Sabre\DAV\Tree { $info = $this->fileView->getFileInfo(dirname($destination)); - if ($info && !$info->isUpdateable()) { + if ($this->fileView->file_exists($destination)) { + $destinationPermission = $info && $info->isUpdateable(); + } else { + $destinationPermission = $info && $info->isCreatable(); + } + if (!$destinationPermission) { throw new Forbidden('No permissions to copy object.'); }