diff options
author | Vincent Petry <vincent@nextcloud.com> | 2022-06-13 12:48:35 +0200 |
---|---|---|
committer | Carl Schwan <carl@carlschwan.eu> | 2022-07-28 16:53:24 +0200 |
commit | 2ee659e54787c938e57787261442ad4037270322 (patch) | |
tree | ddc2a94bb966c5790bf14eb31ecc1d73d20fc951 /apps/files_sharing | |
parent | 2fb7a1feebb6b8a2c524c75e688cec00d4e3d50e (diff) | |
download | nextcloud-server-2ee659e54787c938e57787261442ad4037270322.tar.gz nextcloud-server-2ee659e54787c938e57787261442ad4037270322.zip |
Fix view-only code after code review comments
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/lib/AppInfo/Application.php | 10 | ||||
-rw-r--r-- | apps/files_sharing/lib/ViewOnly.php | 13 |
2 files changed, 14 insertions, 9 deletions
diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index fef579a11c0..451d6b6557a 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -125,12 +125,12 @@ class Application extends App implements IBootstrap { } - public function registerMountProviders(IMountProviderCollection $mountProviderCollection, MountProvider $mountProvider, ExternalMountProvider $externalMountProvider) { + public function registerMountProviders(IMountProviderCollection $mountProviderCollection, MountProvider $mountProvider, ExternalMountProvider $externalMountProvider): void { $mountProviderCollection->registerProvider($mountProvider); $mountProviderCollection->registerProvider($externalMountProvider); } - public function registerEventsScripts(IEventDispatcher $dispatcher, EventDispatcherInterface $oldDispatcher) { + public function registerEventsScripts(IEventDispatcher $dispatcher, EventDispatcherInterface $oldDispatcher): void { // sidebar and files scripts $dispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); $dispatcher->addServiceListener(BeforeTemplateRenderedEvent::class, LegacyBeforeTemplateRenderedListener::class); @@ -159,12 +159,12 @@ class Application extends App implements IBootstrap { IEventDispatcher $dispatcher, ?IUserSession $userSession, IRootFolder $rootFolder - ) { + ): void { $dispatcher->addListener( 'file.beforeGetDirect', function (GenericEvent $event) use ($userSession, $rootFolder) { - $pathsToCheck[] = $event->getArgument('path'); + $pathsToCheck = [$event->getArgument('path')]; // Check only for user/group shares. Don't restrict e.g. share links if ($userSession && $userSession->isLoggedIn()) { @@ -213,7 +213,7 @@ class Application extends App implements IBootstrap { ); } - public function setupSharingMenus(IManager $shareManager, IFactory $l10nFactory, IUserSession $userSession) { + public function setupSharingMenus(IManager $shareManager, IFactory $l10nFactory, IUserSession $userSession): void { if (!$shareManager->shareApiEnabled() || !class_exists('\OCA\Files\App')) { return; } diff --git a/apps/files_sharing/lib/ViewOnly.php b/apps/files_sharing/lib/ViewOnly.php index 58ff2e7f2b4..26e8e43a871 100644 --- a/apps/files_sharing/lib/ViewOnly.php +++ b/apps/files_sharing/lib/ViewOnly.php @@ -42,7 +42,7 @@ class ViewOnly { * @param string[] $pathsToCheck * @return bool */ - public function check($pathsToCheck) { + public function check(array $pathsToCheck): bool { // If any of elements cannot be downloaded, prevent whole download foreach ($pathsToCheck as $file) { try { @@ -70,7 +70,7 @@ class ViewOnly { * @return bool * @throws NotFoundException */ - private function dirRecursiveCheck(Folder $dirInfo) { + private function dirRecursiveCheck(Folder $dirInfo): bool { if (!$this->checkFileInfo($dirInfo)) { return false; } @@ -94,7 +94,7 @@ class ViewOnly { * @return bool * @throws NotFoundException */ - private function checkFileInfo(Node $fileInfo) { + private function checkFileInfo(Node $fileInfo): bool { // Restrict view-only to nodes which are shared $storage = $fileInfo->getStorage(); if (!$storage->instanceOfStorage(SharedStorage::class)) { @@ -105,9 +105,14 @@ class ViewOnly { /** @var \OCA\Files_Sharing\SharedStorage $storage */ $share = $storage->getShare(); + $canDownload = true; + // Check if read-only and on whether permission can download is both set and disabled. + $attributes = $share->getAttributes(); + if ($attributes !== null) { + $canDownload = $attributes->getAttribute('permissions', 'download'); + } - $canDownload = $share->getAttributes()->getAttribute('permissions', 'download'); if ($canDownload !== null && !$canDownload) { return false; } |