Skip to content

Commit 1c0fff7

Browse files
committed
fix(caldav): grant sharee Acls to the delegate
Signed-off-by: Hamza <hamzamahjoubi221@gmail.com>
1 parent a118773 commit 1c0fff7

2 files changed

Lines changed: 42 additions & 0 deletions

File tree

apps/dav/lib/CalDAV/Calendar.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,18 +177,38 @@ public function getACL() {
177177
'principal' => parent::getOwner(),
178178
'protected' => true,
179179
];
180+
$acl[] = [
181+
'privilege' => '{DAV:}read',
182+
'principal' => parent::getOwner() . '/calendar-proxy-read',
183+
'protected' => true,
184+
];
185+
$acl[] = [
186+
'privilege' => '{DAV:}read',
187+
'principal' => parent::getOwner() . '/calendar-proxy-write',
188+
'protected' => true,
189+
];
180190
if ($this->canWrite()) {
181191
$acl[] = [
182192
'privilege' => '{DAV:}write',
183193
'principal' => parent::getOwner(),
184194
'protected' => true,
185195
];
196+
$acl[] = [
197+
'privilege' => '{DAV:}write',
198+
'principal' => parent::getOwner() . '/calendar-proxy-write',
199+
'protected' => true,
200+
];
186201
} else {
187202
$acl[] = [
188203
'privilege' => '{DAV:}write-properties',
189204
'principal' => parent::getOwner(),
190205
'protected' => true,
191206
];
207+
$acl[] = [
208+
'privilege' => '{DAV:}write-properties',
209+
'principal' => parent::getOwner() . '/calendar-proxy-write',
210+
'protected' => true,
211+
];
192212
}
193213
}
194214
if ($this->isPublic()) {
@@ -205,6 +225,8 @@ public function getACL() {
205225
$this->getOwner() . '/calendar-proxy-read',
206226
$this->getOwner() . '/calendar-proxy-write',
207227
parent::getOwner(),
228+
parent::getOwner() . '/calendar-proxy-read',
229+
parent::getOwner() . '/calendar-proxy-write',
208230
'principals/system/public',
209231
];
210232
/** @var list<array{privilege: string, principal: string, protected: bool}> $acl */

apps/dav/tests/unit/CalDAV/CalendarTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,18 +236,38 @@ public function testAcl($expectsWrite, $readOnlyValue, $hasOwnerSet, $uri = 'def
236236
'principal' => 'user2',
237237
'protected' => true
238238
];
239+
$expectedAcl[] = [
240+
'privilege' => '{DAV:}read',
241+
'principal' => 'user2/calendar-proxy-read',
242+
'protected' => true
243+
];
244+
$expectedAcl[] = [
245+
'privilege' => '{DAV:}read',
246+
'principal' => 'user2/calendar-proxy-write',
247+
'protected' => true
248+
];
239249
if ($expectsWrite) {
240250
$expectedAcl[] = [
241251
'privilege' => '{DAV:}write',
242252
'principal' => 'user2',
243253
'protected' => true
244254
];
255+
$expectedAcl[] = [
256+
'privilege' => '{DAV:}write',
257+
'principal' => 'user2/calendar-proxy-write',
258+
'protected' => true
259+
];
245260
} else {
246261
$expectedAcl[] = [
247262
'privilege' => '{DAV:}write-properties',
248263
'principal' => 'user2',
249264
'protected' => true
250265
];
266+
$expectedAcl[] = [
267+
'privilege' => '{DAV:}write-properties',
268+
'principal' => 'user2/calendar-proxy-write',
269+
'protected' => true
270+
];
251271
}
252272
}
253273
$this->assertEquals($expectedAcl, $acl);

0 commit comments

Comments
 (0)