|
7 | 7 | */ |
8 | 8 | use OC\Files\Filesystem; |
9 | 9 | use OC\Files\Storage\Wrapper\DirPermissionsMask; |
| 10 | +use OC\Files\Storage\Wrapper\PermissionsMask; |
10 | 11 | use OC\Files\View; |
11 | 12 | use OCA\DAV\Connector\LegacyPublicAuth; |
12 | 13 | use OCA\DAV\Connector\Sabre\ServerFactory; |
|
17 | 18 | use OCP\BeforeSabrePubliclyLoadedEvent; |
18 | 19 | use OCP\Constants; |
19 | 20 | use OCP\EventDispatcher\IEventDispatcher; |
| 21 | +use OCP\Files\IHomeStorage; |
20 | 22 | use OCP\Files\IRootFolder; |
21 | 23 | use OCP\Files\Mount\IMountManager; |
22 | 24 | use OCP\IConfig; |
@@ -93,11 +95,17 @@ function (\Sabre\DAV\Server $server) use ( |
93 | 95 | // FIXME: should not add storage wrappers outside of preSetup, need to find a better way |
94 | 96 | $previousLog = Filesystem::logWarningWhenAddingStorageWrapper(false); |
95 | 97 | Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) { |
96 | | - return new DirPermissionsMask([ |
97 | | - 'storage' => $storage, |
98 | | - 'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE, |
99 | | - 'path' => 'files' |
100 | | - ]); |
| 98 | + $mask = $share->getPermissions() | Constants::PERMISSION_SHARE; |
| 99 | + |
| 100 | + if ($storage instanceof IHomeStorage) { |
| 101 | + return new DirPermissionsMask([ |
| 102 | + 'storage' => $storage, |
| 103 | + 'mask' => $mask |
| 104 | + 'path' => 'files' |
| 105 | + ]); |
| 106 | + } else { |
| 107 | + return new PermissionsMask(['storage' => $storage, 'mask' => $mask]); |
| 108 | + } |
101 | 109 | }); |
102 | 110 | Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) { |
103 | 111 | return new PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]); |
|
0 commit comments