@@ -29,25 +29,25 @@ |
||
| 29 | 29 | |
| 30 | 30 | class PublicOwnerWrapper extends Wrapper { |
| 31 | 31 | |
| 32 | - /** @var string */ |
|
| 33 | - private $owner; |
|
| 34 | - |
|
| 35 | - /** |
|
| 36 | - * @param array $arguments ['storage' => $storage, 'owner' => $owner] |
|
| 37 | - * |
|
| 38 | - * $storage: The storage the permissions mask should be applied on |
|
| 39 | - * $owner: The owner to use in case no owner is found |
|
| 40 | - */ |
|
| 41 | - public function __construct($arguments) { |
|
| 42 | - parent::__construct($arguments); |
|
| 43 | - $this->owner = $arguments['owner']; |
|
| 44 | - } |
|
| 45 | - |
|
| 46 | - public function getOwner($path) { |
|
| 47 | - $owner = parent::getOwner($path); |
|
| 48 | - |
|
| 49 | - if ($owner === null || $owner === false) { |
|
| 50 | - return $this->owner; |
|
| 51 | - } |
|
| 52 | - } |
|
| 32 | + /** @var string */ |
|
| 33 | + private $owner; |
|
| 34 | + |
|
| 35 | + /** |
|
| 36 | + * @param array $arguments ['storage' => $storage, 'owner' => $owner] |
|
| 37 | + * |
|
| 38 | + * $storage: The storage the permissions mask should be applied on |
|
| 39 | + * $owner: The owner to use in case no owner is found |
|
| 40 | + */ |
|
| 41 | + public function __construct($arguments) { |
|
| 42 | + parent::__construct($arguments); |
|
| 43 | + $this->owner = $arguments['owner']; |
|
| 44 | + } |
|
| 45 | + |
|
| 46 | + public function getOwner($path) { |
|
| 47 | + $owner = parent::getOwner($path); |
|
| 48 | + |
|
| 49 | + if ($owner === null || $owner === false) { |
|
| 50 | + return $this->owner; |
|
| 51 | + } |
|
| 52 | + } |
|
| 53 | 53 | } |
@@ -40,22 +40,22 @@ discard block |
||
| 40 | 40 | |
| 41 | 41 | // Backends |
| 42 | 42 | $authBackend = new OCA\DAV\Connector\PublicAuth( |
| 43 | - \OC::$server->getRequest(), |
|
| 44 | - \OC::$server->getShareManager(), |
|
| 45 | - \OC::$server->getSession() |
|
| 43 | + \OC::$server->getRequest(), |
|
| 44 | + \OC::$server->getShareManager(), |
|
| 45 | + \OC::$server->getSession() |
|
| 46 | 46 | ); |
| 47 | 47 | $authPlugin = new \Sabre\DAV\Auth\Plugin($authBackend); |
| 48 | 48 | |
| 49 | 49 | $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory( |
| 50 | - \OC::$server->getConfig(), |
|
| 51 | - \OC::$server->getLogger(), |
|
| 52 | - \OC::$server->getDatabaseConnection(), |
|
| 53 | - \OC::$server->getUserSession(), |
|
| 54 | - \OC::$server->getMountManager(), |
|
| 55 | - \OC::$server->getTagManager(), |
|
| 56 | - \OC::$server->getRequest(), |
|
| 57 | - \OC::$server->getPreviewManager(), |
|
| 58 | - \OC::$server->getEventDispatcher() |
|
| 50 | + \OC::$server->getConfig(), |
|
| 51 | + \OC::$server->getLogger(), |
|
| 52 | + \OC::$server->getDatabaseConnection(), |
|
| 53 | + \OC::$server->getUserSession(), |
|
| 54 | + \OC::$server->getMountManager(), |
|
| 55 | + \OC::$server->getTagManager(), |
|
| 56 | + \OC::$server->getRequest(), |
|
| 57 | + \OC::$server->getPreviewManager(), |
|
| 58 | + \OC::$server->getEventDispatcher() |
|
| 59 | 59 | ); |
| 60 | 60 | |
| 61 | 61 | $requestUri = \OC::$server->getRequest()->getRequestUri(); |
@@ -64,45 +64,45 @@ discard block |
||
| 64 | 64 | $filesDropPlugin = new \OCA\DAV\Files\Sharing\FilesDropPlugin(); |
| 65 | 65 | |
| 66 | 66 | $server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) { |
| 67 | - $isAjax = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'); |
|
| 68 | - $federatedSharingApp = \OC::$server->query(\OCA\FederatedFileSharing\AppInfo\Application::class); |
|
| 69 | - $federatedShareProvider = $federatedSharingApp->getFederatedShareProvider(); |
|
| 70 | - if ($federatedShareProvider->isOutgoingServer2serverShareEnabled() === false && !$isAjax) { |
|
| 71 | - // this is what is thrown when trying to access a non-existing share |
|
| 72 | - throw new \Sabre\DAV\Exception\NotAuthenticated(); |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - $share = $authBackend->getShare(); |
|
| 76 | - $owner = $share->getShareOwner(); |
|
| 77 | - $isReadable = $share->getPermissions() & \OCP\Constants::PERMISSION_READ; |
|
| 78 | - $fileId = $share->getNodeId(); |
|
| 79 | - |
|
| 80 | - // FIXME: should not add storage wrappers outside of preSetup, need to find a better way |
|
| 81 | - $previousLog = \OC\Files\Filesystem::logWarningWhenAddingStorageWrapper(false); |
|
| 82 | - \OC\Files\Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) { |
|
| 83 | - return new \OC\Files\Storage\Wrapper\PermissionsMask(['storage' => $storage, 'mask' => $share->getPermissions() | \OCP\Constants::PERMISSION_SHARE]); |
|
| 84 | - }); |
|
| 85 | - \OC\Files\Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) { |
|
| 86 | - return new \OCA\DAV\Storage\PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]); |
|
| 87 | - }); |
|
| 88 | - \OC\Files\Filesystem::logWarningWhenAddingStorageWrapper($previousLog); |
|
| 89 | - |
|
| 90 | - OC_Util::tearDownFS(); |
|
| 91 | - OC_Util::setupFS($owner); |
|
| 92 | - $ownerView = new \OC\Files\View('/'. $owner . '/files'); |
|
| 93 | - $path = $ownerView->getPath($fileId); |
|
| 94 | - $fileInfo = $ownerView->getFileInfo($path); |
|
| 95 | - $linkCheckPlugin->setFileInfo($fileInfo); |
|
| 96 | - |
|
| 97 | - // If not readble (files_drop) enable the filesdrop plugin |
|
| 98 | - if (!$isReadable) { |
|
| 99 | - $filesDropPlugin->enable(); |
|
| 100 | - } |
|
| 101 | - |
|
| 102 | - $view = new \OC\Files\View($ownerView->getAbsolutePath($path)); |
|
| 103 | - $filesDropPlugin->setView($view); |
|
| 104 | - |
|
| 105 | - return $view; |
|
| 67 | + $isAjax = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'); |
|
| 68 | + $federatedSharingApp = \OC::$server->query(\OCA\FederatedFileSharing\AppInfo\Application::class); |
|
| 69 | + $federatedShareProvider = $federatedSharingApp->getFederatedShareProvider(); |
|
| 70 | + if ($federatedShareProvider->isOutgoingServer2serverShareEnabled() === false && !$isAjax) { |
|
| 71 | + // this is what is thrown when trying to access a non-existing share |
|
| 72 | + throw new \Sabre\DAV\Exception\NotAuthenticated(); |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + $share = $authBackend->getShare(); |
|
| 76 | + $owner = $share->getShareOwner(); |
|
| 77 | + $isReadable = $share->getPermissions() & \OCP\Constants::PERMISSION_READ; |
|
| 78 | + $fileId = $share->getNodeId(); |
|
| 79 | + |
|
| 80 | + // FIXME: should not add storage wrappers outside of preSetup, need to find a better way |
|
| 81 | + $previousLog = \OC\Files\Filesystem::logWarningWhenAddingStorageWrapper(false); |
|
| 82 | + \OC\Files\Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) { |
|
| 83 | + return new \OC\Files\Storage\Wrapper\PermissionsMask(['storage' => $storage, 'mask' => $share->getPermissions() | \OCP\Constants::PERMISSION_SHARE]); |
|
| 84 | + }); |
|
| 85 | + \OC\Files\Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) { |
|
| 86 | + return new \OCA\DAV\Storage\PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]); |
|
| 87 | + }); |
|
| 88 | + \OC\Files\Filesystem::logWarningWhenAddingStorageWrapper($previousLog); |
|
| 89 | + |
|
| 90 | + OC_Util::tearDownFS(); |
|
| 91 | + OC_Util::setupFS($owner); |
|
| 92 | + $ownerView = new \OC\Files\View('/'. $owner . '/files'); |
|
| 93 | + $path = $ownerView->getPath($fileId); |
|
| 94 | + $fileInfo = $ownerView->getFileInfo($path); |
|
| 95 | + $linkCheckPlugin->setFileInfo($fileInfo); |
|
| 96 | + |
|
| 97 | + // If not readble (files_drop) enable the filesdrop plugin |
|
| 98 | + if (!$isReadable) { |
|
| 99 | + $filesDropPlugin->enable(); |
|
| 100 | + } |
|
| 101 | + |
|
| 102 | + $view = new \OC\Files\View($ownerView->getAbsolutePath($path)); |
|
| 103 | + $filesDropPlugin->setView($view); |
|
| 104 | + |
|
| 105 | + return $view; |
|
| 106 | 106 | }); |
| 107 | 107 | |
| 108 | 108 | $server->addPlugin($linkCheckPlugin); |