Skip to content

Commit 0c4bb5e

Browse files
fix(dav): calculate permissions based on addressbook principal
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
1 parent 6e9d48b commit 0c4bb5e

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

apps/dav/lib/CardDAV/AddressBookImpl.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ public function getPermissions() {
152152
$permissions = $this->addressBook->getACL();
153153
$result = 0;
154154
foreach ($permissions as $permission) {
155+
if ($this->addressBookInfo['principaluri'] !== $permission['principal']) {
156+
continue;
157+
}
158+
155159
switch ($permission['privilege']) {
156160
case '{DAV:}read':
157161
$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
@@ -241,14 +241,15 @@ public function testGetPermissions(array $permissions, int $expected): void {
241241
public static function dataTestGetPermissions(): array {
242242
return [
243243
[[], 0],
244-
[[['privilege' => '{DAV:}read']], 1],
245-
[[['privilege' => '{DAV:}write']], 6],
246-
[[['privilege' => '{DAV:}all']], 31],
247-
[[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write']], 7],
248-
[[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}all']], 31],
249-
[[['privilege' => '{DAV:}all'],['privilege' => '{DAV:}write']], 31],
250-
[[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write'],['privilege' => '{DAV:}all']], 31],
251-
[[['privilege' => '{DAV:}all'],['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write']], 31],
244+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system']], 1],
245+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'], ['privilege' => '{DAV:}write', 'principal' => 'principals/someone/else']], 1],
246+
[[['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 6],
247+
[[['privilege' => '{DAV:}all', 'principal' => 'principals/system/system']], 31],
248+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 7],
249+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}all', 'principal' => 'principals/system/system']], 31],
250+
[[['privilege' => '{DAV:}all', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 31],
251+
[[['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}all', 'principal' => 'principals/system/system']], 31],
252+
[[['privilege' => '{DAV:}all', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}read', 'principal' => 'principals/system/system'],['privilege' => '{DAV:}write', 'principal' => 'principals/system/system']], 31],
252253
];
253254
}
254255

0 commit comments

Comments
 (0)