aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorLukas Reschke <lukas@statuscode.ch>2017-02-10 14:01:26 +0100
committerLukas Reschke <lukas@statuscode.ch>2017-02-10 16:18:04 +0100
commit929648ce2c9d91d836a6edb121d563f46b8fc2b0 (patch)
tree05525c2c4b9534f3adf92627bb21008c4e1fcb52 /apps
parentb4ade766656a2032f33d56eb4a0f17bb128af722 (diff)
downloadnextcloud-server-929648ce2c9d91d836a6edb121d563f46b8fc2b0.tar.gz
nextcloud-server-929648ce2c9d91d836a6edb121d563f46b8fc2b0.zip
Add integration tests for legacy DAV endpoints
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/appinfo/v1/caldav.php1
-rw-r--r--apps/dav/appinfo/v1/carddav.php1
-rw-r--r--apps/dav/lib/Connector/LegacyDAVACL.php3
-rw-r--r--apps/dav/lib/Connector/Sabre/DavAclPlugin.php17
4 files changed, 21 insertions, 1 deletions
diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php
index f524c47a821..7f2ff2b37da 100644
--- a/apps/dav/appinfo/v1/caldav.php
+++ b/apps/dav/appinfo/v1/caldav.php
@@ -67,6 +67,7 @@ $nodes = array(
// Fire up server
$server = new \Sabre\DAV\Server($nodes);
+$server::$exposeVersion = false;
$server->httpRequest->setUrl(\OC::$server->getRequest()->getRequestUri());
$server->setBaseUri($baseuri);
diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php
index b70045d420b..04344e83fde 100644
--- a/apps/dav/appinfo/v1/carddav.php
+++ b/apps/dav/appinfo/v1/carddav.php
@@ -66,6 +66,7 @@ $nodes = array(
// Fire up server
$server = new \Sabre\DAV\Server($nodes);
+$server::$exposeVersion = false;
$server->httpRequest->setUrl(\OC::$server->getRequest()->getRequestUri());
$server->setBaseUri($baseuri);
// Add plugins
diff --git a/apps/dav/lib/Connector/LegacyDAVACL.php b/apps/dav/lib/Connector/LegacyDAVACL.php
index d5185ecd03b..46cbb504cce 100644
--- a/apps/dav/lib/Connector/LegacyDAVACL.php
+++ b/apps/dav/lib/Connector/LegacyDAVACL.php
@@ -67,6 +67,7 @@ class LegacyDAVACL extends DavAclPlugin {
return new Principal(Principal::UNAUTHENTICATED);
}
});
- parent::propFind($propFind, $node);
+
+ return parent::propFind($propFind, $node);
}
}
diff --git a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php
index 244394ec6fc..427a3756019 100644
--- a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php
@@ -23,6 +23,7 @@
namespace OCA\DAV\Connector\Sabre;
+use Sabre\CalDAV\Principal\User;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\IFile;
use Sabre\DAV\INode;
@@ -72,4 +73,20 @@ class DavAclPlugin extends \Sabre\DAVACL\Plugin {
return $access;
}
+
+ public function propFind(PropFind $propFind, INode $node) {
+ // If the node is neither readable nor writable then fail unless its of
+ // the standard user-principal
+ if(!($node instanceof User)) {
+ $path = $propFind->getPath();
+ $readPermissions = $this->checkPrivileges($path, '{DAV:}read', self::R_PARENT, false);
+ $writePermissions = $this->checkPrivileges($path, '{DAV:}write', self::R_PARENT, false);
+ if ($readPermissions === false && $writePermissions === false) {
+ $this->checkPrivileges($path, '{DAV:}read', self::R_PARENT, true);
+ $this->checkPrivileges($path, '{DAV:}write', self::R_PARENT, true);
+ }
+ }
+
+ return parent::propFind($propFind, $node);
+ }
}