aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/Storage
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2024-08-02 14:30:52 +0200
committerFerdinand Thiessen <opensource@fthiessen.de>2024-08-12 11:28:03 +0200
commitcb1b366baf75da4c578bc534884eefa7f6b4b3d2 (patch)
treebdb367d502a6990c39165960a76d3268270162ef /apps/dav/lib/Storage
parent1a7acf061e26d938e2162f791afb262dc7c2b90d (diff)
downloadnextcloud-server-cb1b366baf75da4c578bc534884eefa7f6b4b3d2.tar.gz
nextcloud-server-cb1b366baf75da4c578bc534884eefa7f6b4b3d2.zip
fix(dav): Ensure share properties are also set on public remote endpoint
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps/dav/lib/Storage')
-rw-r--r--apps/dav/lib/Storage/PublicShareWrapper.php38
1 files changed, 38 insertions, 0 deletions
diff --git a/apps/dav/lib/Storage/PublicShareWrapper.php b/apps/dav/lib/Storage/PublicShareWrapper.php
new file mode 100644
index 00000000000..fb24abda9d0
--- /dev/null
+++ b/apps/dav/lib/Storage/PublicShareWrapper.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\DAV\Storage;
+
+use OC\Files\Storage\Wrapper\Wrapper;
+use OCP\Share\IShare;
+
+class PublicShareWrapper extends Wrapper {
+
+ private IShare $share;
+
+ /**
+ * @param array $arguments ['storage' => $storage, 'share' => $share]
+ *
+ * $storage: The storage the permissions mask should be applied on
+ * $share: The share to use in case no share is found
+ */
+ public function __construct($arguments) {
+ parent::__construct($arguments);
+ $this->share = $arguments['share'];
+ }
+
+ public function getShare(): IShare {
+ $storage = parent::getWrapperStorage();
+ if (method_exists($storage, 'getShare')) {
+ /** @var \OCA\Files_Sharing\SharedStorage $storage */
+ return $storage->getShare();
+ }
+
+ return $this->share;
+ }
+}