diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2023-06-12 11:26:23 +0200 |
---|---|---|
committer | Anna (Rebase PR Action) <miaulalala@users.noreply.github.com> | 2023-06-19 13:42:13 +0000 |
commit | debd03f30d236e28fe7952dde517acb132f7c095 (patch) | |
tree | 5ae5b50741e92cf75d8e1784e3f32673ed95dd85 /apps | |
parent | 4bfd7ee9eb8b8ef7d2d6dafe28c92cea5073b70f (diff) | |
download | nextcloud-server-debd03f30d236e28fe7952dde517acb132f7c095.tar.gz nextcloud-server-debd03f30d236e28fe7952dde517acb132f7c095.zip |
perf: skip request without write permission
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/DavAclPlugin.php | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php index 6842975835d..7fa94d7b903 100644 --- a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php +++ b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php @@ -94,8 +94,19 @@ class DavAclPlugin extends \Sabre\DAVACL\Plugin { $path = $request->getPath(); // prevent the plugin from causing an unneeded overhead for file requests - if (strpos($path, 'files/') !== 0) { - parent::beforeMethod($request, $response); + if (str_starts_with($path, 'files/')) { + return; + } + + parent::beforeMethod($request, $response); + + $createAddressbookOrCalendarRequest = ($request->getMethod() === 'MKCALENDAR' || $request->getMethod() === 'MKCOL') + && (str_starts_with($path, 'addressbooks/') || str_starts_with($path, 'calendars/')); + + if ($createAddressbookOrCalendarRequest) { + [$parentName] = \Sabre\Uri\split($path); + // is calendars/users/bob or addressbooks/users/bob writeable? + $this->checkPrivileges($parentName, '{DAV:}write'); } } } |