Skip to content

Commit 17e97e6

Browse files
authored
Merge pull request #54307 from nextcloud/backport/54298/stable30
[stable30] fix(dav): calculate permissions based on addressbook principal
2 parents 755376a + 676d123 commit 17e97e6

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

apps/dav/lib/CardDAV/AddressBookImpl.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ public function getPermissions() {
177177
$permissions = $this->addressBook->getACL();
178178
$result = 0;
179179
foreach ($permissions as $permission) {
180+
if ($this->addressBookInfo['principaluri'] !== $permission['principal']) {
181+
continue;
182+
}
183+
180184
switch ($permission['privilege']) {
181185
case '{DAV:}read':
182186
$result |= Constants::PERMISSION_READ;

apps/dav/tests/unit/CardDAV/AddressBookImplTest.php

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -264,14 +264,15 @@ public function testGetPermissions($permissions, $expected): void {
264264
public function dataTestGetPermissions() {
265265
return [
266266
[[], 0],
267-
[[['privilege' => '{DAV:}read']], 1],
268-
[[['privilege' => '{DAV:}write']], 6],
269-
[[['privilege' => '{DAV:}all']], 31],
270-
[[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write']], 7],
271-
[[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}all']], 31],
272-
[[['privilege' => '{DAV:}all'],['privilege' => '{DAV:}write']], 31],
273-
[[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write'],['privilege' => '{DAV:}all']], 31],
274-
[[['privilege' => '{DAV:}all'],['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write']], 31],
267+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system']], 1],
268+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'], ['privilege' => '{DAV:}write', 'principal' => 'principals/someone/else']], 1],
269+
[[['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 6],
270+
[[['privilege' => '{DAV:}all', 'principal' => 'principals/system/system']], 31],
271+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 7],
272+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}all', 'principal' => 'principals/system/system']], 31],
273+
[[['privilege' => '{DAV:}all', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 31],
274+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}all', 'principal' => 'principals/system/system']], 31],
275+
[[['privilege' => '{DAV:}all', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 31],
275276
];
276277
}
277278

0 commit comments

Comments
 (0)