|
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; |
|
18 | 19 | use OCP\BeforeSabrePubliclyLoadedEvent; |
19 | 20 | use OCP\Constants; |
20 | 21 | use OCP\EventDispatcher\IEventDispatcher; |
| 22 | +use OCP\Files\IHomeStorage; |
21 | 23 | use OCP\Files\IRootFolder; |
22 | 24 | use OCP\Files\Mount\IMountManager; |
23 | 25 | use OCP\IConfig; |
@@ -98,11 +100,17 @@ function (\Sabre\DAV\Server $server) use ( |
98 | 100 | // FIXME: should not add storage wrappers outside of preSetup, need to find a better way |
99 | 101 | $previousLog = Filesystem::logWarningWhenAddingStorageWrapper(false); |
100 | 102 | 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 | + } |
106 | 114 | }); |
107 | 115 | Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) { |
108 | 116 | return new PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]); |
|
0 commit comments