aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/CalDAV/CalendarImpl.php6
-rw-r--r--apps/dav/tests/unit/CalDAV/CalendarImplTest.php19
2 files changed, 18 insertions, 7 deletions
diff --git a/apps/dav/lib/CalDAV/CalendarImpl.php b/apps/dav/lib/CalDAV/CalendarImpl.php
index 919b08eefce..b3062f005ee 100644
--- a/apps/dav/lib/CalDAV/CalendarImpl.php
+++ b/apps/dav/lib/CalDAV/CalendarImpl.php
@@ -110,6 +110,10 @@ class CalendarImpl implements ICreateFromString, IHandleImipMessage {
$permissions = $this->calendar->getACL();
$result = 0;
foreach ($permissions as $permission) {
+ if ($this->calendarInfo['principaluri'] !== $permission['principal']) {
+ continue;
+ }
+
switch ($permission['privilege']) {
case '{DAV:}read':
$result |= Constants::PERMISSION_READ;
@@ -133,7 +137,7 @@ class CalendarImpl implements ICreateFromString, IHandleImipMessage {
public function isWritable(): bool {
return $this->calendar->canWrite();
}
-
+
/**
* @since 26.0.0
*/
diff --git a/apps/dav/tests/unit/CalDAV/CalendarImplTest.php b/apps/dav/tests/unit/CalDAV/CalendarImplTest.php
index a0b2965f223..ee9b85fafe8 100644
--- a/apps/dav/tests/unit/CalDAV/CalendarImplTest.php
+++ b/apps/dav/tests/unit/CalDAV/CalendarImplTest.php
@@ -40,7 +40,8 @@ class CalendarImplTest extends \Test\TestCase {
'id' => 'fancy_id_123',
'{DAV:}displayname' => 'user readable name 123',
'{http://apple.com/ns/ical/}calendar-color' => '#AABBCC',
- 'uri' => '/this/is/a/uri'
+ 'uri' => '/this/is/a/uri',
+ 'principaluri' => 'principal/users/foobar'
];
$this->backend = $this->createMock(CalDavBackend::class);
@@ -76,7 +77,10 @@ class CalendarImplTest extends \Test\TestCase {
->method('getACL')
->with()
->willReturn([
- ['privilege' => '{DAV:}read']
+ ['privilege' => '{DAV:}read', 'principal' => 'principal/users/foobar'],
+ ['privilege' => '{DAV:}read', 'principal' => 'principal/users/other'],
+ ['privilege' => '{DAV:}write', 'principal' => 'principal/users/other'],
+ ['privilege' => '{DAV:}all', 'principal' => 'principal/users/other'],
]);
$this->assertEquals(1, $this->calendarImpl->getPermissions());
@@ -87,7 +91,9 @@ class CalendarImplTest extends \Test\TestCase {
->method('getACL')
->with()
->willReturn([
- ['privilege' => '{DAV:}write']
+ ['privilege' => '{DAV:}write', 'principal' => 'principal/users/foobar'],
+ ['privilege' => '{DAV:}read', 'principal' => 'principal/users/other'],
+ ['privilege' => '{DAV:}all', 'principal' => 'principal/users/other'],
]);
$this->assertEquals(6, $this->calendarImpl->getPermissions());
@@ -98,8 +104,9 @@ class CalendarImplTest extends \Test\TestCase {
->method('getACL')
->with()
->willReturn([
- ['privilege' => '{DAV:}read'],
- ['privilege' => '{DAV:}write']
+ ['privilege' => '{DAV:}write', 'principal' => 'principal/users/foobar'],
+ ['privilege' => '{DAV:}read', 'principal' => 'principal/users/foobar'],
+ ['privilege' => '{DAV:}all', 'principal' => 'principal/users/other'],
]);
$this->assertEquals(7, $this->calendarImpl->getPermissions());
@@ -110,7 +117,7 @@ class CalendarImplTest extends \Test\TestCase {
->method('getACL')
->with()
->willReturn([
- ['privilege' => '{DAV:}all']
+ ['privilege' => '{DAV:}all', 'principal' => 'principal/users/foobar'],
]);
$this->assertEquals(31, $this->calendarImpl->getPermissions());