From 5dbbe2ccf9570e226f47f89a86204b5a9546264b Mon Sep 17 00:00:00 2001 From: provokateurin Date: Tue, 3 Mar 2026 15:25:54 +0100 Subject: [PATCH] fix(dav): Use share initiator to get the share node, because the owner might on another server Signed-off-by: provokateurin --- apps/dav/appinfo/v1/publicwebdav.php | 3 +-- apps/dav/appinfo/v2/publicremote.php | 3 +-- apps/dav/lib/Files/Sharing/PublicLinkCheckPlugin.php | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index 2eaf05ca2d9..7b576496cc8 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -92,7 +92,6 @@ $server = $serverFactory->createServer( } $share = $authBackend->getShare(); - $owner = $share->getShareOwner(); $isReadable = $share->getPermissions() & Constants::PERMISSION_READ; $fileId = $share->getNodeId(); @@ -107,7 +106,7 @@ $server = $serverFactory->createServer( Filesystem::logWarningWhenAddingStorageWrapper($previousLog); $rootFolder = Server::get(IRootFolder::class); - $userFolder = $rootFolder->getUserFolder($owner); + $userFolder = $rootFolder->getUserFolder($share->getSharedBy()); $node = $userFolder->getFirstNodeById($fileId); if (!$node) { throw new \Sabre\DAV\Exception\NotFound(); diff --git a/apps/dav/appinfo/v2/publicremote.php b/apps/dav/appinfo/v2/publicremote.php index facc4041bcc..d1286a577c7 100644 --- a/apps/dav/appinfo/v2/publicremote.php +++ b/apps/dav/appinfo/v2/publicremote.php @@ -99,7 +99,6 @@ $server = $serverFactory->createServer(true, $baseuri, $requestUri, $authPlugin, } $share = $authBackend->getShare(); - $owner = $share->getShareOwner(); $isReadable = $share->getPermissions() & Constants::PERMISSION_READ; $fileId = $share->getNodeId(); @@ -135,7 +134,7 @@ $server = $serverFactory->createServer(true, $baseuri, $requestUri, $authPlugin, Filesystem::logWarningWhenAddingStorageWrapper($previousLog); $rootFolder = Server::get(IRootFolder::class); - $userFolder = $rootFolder->getUserFolder($owner); + $userFolder = $rootFolder->getUserFolder($share->getSharedBy()); $node = $userFolder->getFirstNodeById($fileId); if (!$node) { throw new NotFound(); diff --git a/apps/dav/lib/Files/Sharing/PublicLinkCheckPlugin.php b/apps/dav/lib/Files/Sharing/PublicLinkCheckPlugin.php index c3b269fb9ed..11b328d2194 100644 --- a/apps/dav/lib/Files/Sharing/PublicLinkCheckPlugin.php +++ b/apps/dav/lib/Files/Sharing/PublicLinkCheckPlugin.php @@ -43,7 +43,7 @@ class PublicLinkCheckPlugin extends ServerPlugin { } public function beforeMethod(RequestInterface $request, ResponseInterface $response) { - // verify that the owner didn't have their share permissions revoked + // verify that the initiator didn't have their share permissions revoked if ($this->fileInfo && !$this->fileInfo->isShareable()) { throw new NotFound(); }