Skip to content

Commit d4ab4d2

Browse files
authored
Merge pull request #63660 from nextcloud/leftybournes/fix/publicwebdav-v1
fix(dav): correctly mask public v1 links for non-home storages
2 parents cc479aa + db8d5ef commit d4ab4d2

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\BearerAuth;
@@ -19,6 +20,7 @@
1920
use OCP\BeforeSabrePubliclyLoadedEvent;
2021
use OCP\Constants;
2122
use OCP\EventDispatcher\IEventDispatcher;
23+
use OCP\Files\IHomeStorage;
2224
use OCP\Files\IRootFolder;
2325
use OCP\Files\Mount\IMountManager;
2426
use OCP\Files\Storage\IStorage;
@@ -112,11 +114,17 @@ function (\Sabre\DAV\Server $server) use (
112114
// FIXME: should not add storage wrappers outside of preSetup, need to find a better way
113115
$previousLog = Filesystem::logWarningWhenAddingStorageWrapper(false);
114116
Filesystem::addStorageWrapper('sharePermissions', function (string $mountPoint, IStorage $storage) use ($share) {
115-
return new DirPermissionsMask([
116-
'storage' => $storage,
117-
'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE,
118-
'path' => 'files'
119-
]);
117+
$mask = $share->getPermissions() | Constants::PERMISSION_SHARE;
118+
119+
if ($storage instanceof IHomeStorage) {
120+
return new DirPermissionsMask([
121+
'storage' => $storage,
122+
'mask' => $mask,
123+
'path' => 'files',
124+
]);
125+
} else {
126+
return new PermissionsMask(['storage' => $storage, 'mask' => $mask]);
127+
}
120128
});
121129
Filesystem::addStorageWrapper('shareOwner', function (string $mountPoint, IStorage $storage) use ($share) {
122130
return new PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]);

0 commit comments

Comments
 (0)