Skip to content

Commit b3c6f6c

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

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
@@ -173,18 +173,38 @@ public function getACL() {
173173
'principal' => parent::getOwner(),
174174
'protected' => true,
175175
];
176+
$acl[] = [
177+
'privilege' => '{DAV:}read',
178+
'principal' => parent::getOwner() . '/calendar-proxy-read',
179+
'protected' => true,
180+
];
181+
$acl[] = [
182+
'privilege' => '{DAV:}read',
183+
'principal' => parent::getOwner() . '/calendar-proxy-write',
184+
'protected' => true,
185+
];
176186
if ($this->canWrite()) {
177187
$acl[] = [
178188
'privilege' => '{DAV:}write',
179189
'principal' => parent::getOwner(),
180190
'protected' => true,
181191
];
192+
$acl[] = [
193+
'privilege' => '{DAV:}write',
194+
'principal' => parent::getOwner() . '/calendar-proxy-write',
195+
'protected' => true,
196+
];
182197
} else {
183198
$acl[] = [
184199
'privilege' => '{DAV:}write-properties',
185200
'principal' => parent::getOwner(),
186201
'protected' => true,
187202
];
203+
$acl[] = [
204+
'privilege' => '{DAV:}write-properties',
205+
'principal' => parent::getOwner() . '/calendar-proxy-write',
206+
'protected' => true,
207+
];
188208
}
189209
}
190210
if ($this->isPublic()) {
@@ -201,6 +221,8 @@ public function getACL() {
201221
$this->getOwner() . '/calendar-proxy-read',
202222
$this->getOwner() . '/calendar-proxy-write',
203223
parent::getOwner(),
224+
parent::getOwner() . '/calendar-proxy-read',
225+
parent::getOwner() . '/calendar-proxy-write',
204226
'principals/system/public',
205227
];
206228
/** @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)