Skip to content

Commit ea90cb0

Browse files
authored
Merge pull request #63668 from nextcloud/backport/63660/stable34
[stable34] fix(dav): correctly mask public v1 links for non-home storages
2 parents 453d8ba + cedffd0 commit ea90cb0

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

apps/dav/appinfo/v1/publicwebdav.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*/
88
use OC\Files\Filesystem;
99
use OC\Files\Storage\Wrapper\DirPermissionsMask;
10+
use OC\Files\Storage\Wrapper\PermissionsMask;
1011
use OC\Files\View;
1112
use OCA\DAV\Connector\LegacyPublicAuth;
1213
use OCA\DAV\Connector\Sabre\ServerFactory;
@@ -18,6 +19,7 @@
1819
use OCP\BeforeSabrePubliclyLoadedEvent;
1920
use OCP\Constants;
2021
use OCP\EventDispatcher\IEventDispatcher;
22+
use OCP\Files\IHomeStorage;
2123
use OCP\Files\IRootFolder;
2224
use OCP\Files\Mount\IMountManager;
2325
use OCP\IConfig;
@@ -98,11 +100,17 @@ function (\Sabre\DAV\Server $server) use (
98100
// FIXME: should not add storage wrappers outside of preSetup, need to find a better way
99101
$previousLog = Filesystem::logWarningWhenAddingStorageWrapper(false);
100102
Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) {
101-
return new DirPermissionsMask([
102-
'storage' => $storage,
103-
'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE,
104-
'path' => 'files'
105-
]);
103+
$mask = $share->getPermissions() | Constants::PERMISSION_SHARE;
104+
105+
if ($storage instanceof IHomeStorage) {
106+
return new DirPermissionsMask([
107+
'storage' => $storage,
108+
'mask' => $mask,
109+
'path' => 'files',
110+
]);
111+
} else {
112+
return new PermissionsMask(['storage' => $storage, 'mask' => $mask]);
113+
}
106114
});
107115
Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) {
108116
return new PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]);

0 commit comments

Comments
 (0)