diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2024-02-22 17:59:20 +0100 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2024-03-21 11:50:35 +0100 |
commit | b6e1685683f51ddb8da7b4a5767985ac287fa3ee (patch) | |
tree | bdb069a49c62c19755e8bbf48c3f62314268219d /apps | |
parent | 03f269829f4597a3c258da38b1a0b5b2214acefa (diff) | |
download | nextcloud-server-b6e1685683f51ddb8da7b4a5767985ac287fa3ee.tar.gz nextcloud-server-b6e1685683f51ddb8da7b4a5767985ac287fa3ee.zip |
fix(dav): ACLs for shared addressbooks
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/CardDAV/AddressBook.php | 7 | ||||
-rw-r--r-- | apps/dav/lib/DAV/Sharing/Backend.php | 2 | ||||
-rw-r--r-- | apps/dav/tests/unit/CardDAV/AddressBookTest.php | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/apps/dav/lib/CardDAV/AddressBook.php b/apps/dav/lib/CardDAV/AddressBook.php index 468961b958e..4f589031f06 100644 --- a/apps/dav/lib/CardDAV/AddressBook.php +++ b/apps/dav/lib/CardDAV/AddressBook.php @@ -118,7 +118,7 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable, IMov ], [ 'privilege' => '{DAV:}write-properties', - 'principal' => '{DAV:}authenticated', + 'principal' => $this->getOwner(), 'protected' => true, ], ]; @@ -129,6 +129,11 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable, IMov 'principal' => '{DAV:}authenticated', 'protected' => true, ]; + $acl[] = [ + 'privilege' => '{DAV:}write-properties', + 'principal' => '{DAV:}authenticated', + 'protected' => true, + ]; } if (!$this->isShared()) { diff --git a/apps/dav/lib/DAV/Sharing/Backend.php b/apps/dav/lib/DAV/Sharing/Backend.php index f77be9211bf..b467479bc1e 100644 --- a/apps/dav/lib/DAV/Sharing/Backend.php +++ b/apps/dav/lib/DAV/Sharing/Backend.php @@ -214,7 +214,7 @@ abstract class Backend { 'principal' => $share['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}principal'], 'protected' => true, ]; - } elseif ($this->service->getResourceType() === 'calendar') { + } elseif (in_array($this->service->getResourceType(), ['calendar','addressbook'])) { // Allow changing the properties of read only calendars, // so users can change the visibility. $acl[] = [ diff --git a/apps/dav/tests/unit/CardDAV/AddressBookTest.php b/apps/dav/tests/unit/CardDAV/AddressBookTest.php index f9cba4e6a83..fa312f98797 100644 --- a/apps/dav/tests/unit/CardDAV/AddressBookTest.php +++ b/apps/dav/tests/unit/CardDAV/AddressBookTest.php @@ -169,7 +169,7 @@ class AddressBookTest extends TestCase { 'protected' => true ], [ 'privilege' => '{DAV:}write-properties', - 'principal' => '{DAV:}authenticated', + 'principal' => $hasOwnerSet ? 'user1' : 'user2', 'protected' => true ]]; if ($hasOwnerSet) { |