diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php
index b70045d420b86..b3e77a6edf817 100644
--- a/apps/dav/appinfo/v1/carddav.php
+++ b/apps/dav/appinfo/v1/carddav.php
@@ -39,13 +39,11 @@
\OC::$server->getUserSession(),
\OC::$server->getRequest(),
\OC::$server->getTwoFactorAuthManager(),
- \OC::$server->getBruteForceThrottler(),
- 'principals/'
+ \OC::$server->getBruteForceThrottler()
);
$principalBackend = new Principal(
\OC::$server->getUserManager(),
- \OC::$server->getGroupManager(),
- 'principals/'
+ \OC::$server->getGroupManager()
);
$db = \OC::$server->getDatabaseConnection();
$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager());
@@ -53,14 +51,16 @@
$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
// Root nodes
-$principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
+$principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend, 'principals/users/');
$principalCollection->disableListing = !$debugging; // Disable listing
-$addressBookRoot = new AddressBookRoot($principalBackend, $cardDavBackend);
+$addressBookRoot = new AddressBookRoot($principalBackend, $cardDavBackend, 'principals/users/');
$addressBookRoot->disableListing = !$debugging; // Disable listing
+$principals = new \Sabre\DAV\SimpleCollection('principals', [$principalCollection]);
+
$nodes = array(
- $principalCollection,
+ $principals,
$addressBookRoot,
);
diff --git a/apps/dav/lib/CardDAV/AddressBookRoot.php b/apps/dav/lib/CardDAV/AddressBookRoot.php
index 88435165a8839..bcf14e1d2cd31 100644
--- a/apps/dav/lib/CardDAV/AddressBookRoot.php
+++ b/apps/dav/lib/CardDAV/AddressBookRoot.php
@@ -56,7 +56,7 @@ function getChildForPrincipal(array $principal) {
function getName() {
- if ($this->principalPrefix === 'principals') {
+ if ($this->principalPrefix === 'principals/users/') {
return parent::getName();
}
// Grabbing all the components of the principal path.
diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php
index 924322cdcee2c..5847728824ce9 100644
--- a/apps/dav/lib/Connector/Sabre/Principal.php
+++ b/apps/dav/lib/Connector/Sabre/Principal.php
@@ -81,6 +81,7 @@ public function __construct(IUserManager $userManager,
*/
public function getPrincipalsByPrefix($prefixPath) {
$principals = [];
+ $prefixPath = trim($prefixPath, '/');
if ($prefixPath === $this->principalPrefix) {
foreach($this->userManager->search('') as $user) {
diff --git a/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml b/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml
index bd9f83a481494..bf8c7d1029e32 100644
--- a/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml
+++ b/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml
@@ -188,6 +188,10 @@
$uidstype:
__uids__
+
+ $userstype:
+ users
+
$groupstype:
groups
@@ -208,7 +212,7 @@
$principals_users:
- $principalcollection:
+ $principalcollection:$userstype:/
$principals_groups: