From 7f8f86ab9a7baedb3bf3b9b8a00a755743f2178f Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 17 Mar 2026 17:02:21 +0100 Subject: [PATCH] fix: use `canDownload` for permissions on federated shares Signed-off-by: Ferdinand Thiessen --- .../lib/Controller/MountPublicLinkController.php | 5 ++--- .../files_sharing/lib/DefaultPublicShareTemplateProvider.php | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php index 2cc583639f3..cf755610dca 100644 --- a/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php +++ b/apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php @@ -18,7 +18,6 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\OpenAPI; use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\JSONResponse; -use OCP\Constants; use OCP\Federation\ICloudIdManager; use OCP\HintException; use OCP\Http\Client\IClientService; @@ -108,9 +107,9 @@ class MountPublicLinkController extends Controller { return $response; } - if (($share->getPermissions() & Constants::PERMISSION_READ) === 0) { + if (!$share->canDownload()) { $response = new JSONResponse( - ['message' => 'Mounting file drop not supported'], + ['message' => 'Mounting download restricted share is not allowed'], Http::STATUS_BAD_REQUEST ); $response->throttle(); diff --git a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php index f75922fc37d..fe047ce9081 100644 --- a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php +++ b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php @@ -153,7 +153,7 @@ class DefaultPublicShareTemplateProvider implements IPublicShareTemplateProvider // Create the header action menu $headerActions = []; - if ($view !== 'public-file-drop' && !$share->getHideDownload()) { + if ($share->canDownload() && !$share->getHideDownload()) { // The download URL is used for the "download" header action as well as in some cases for the direct link $downloadUrl = $this->urlGenerator->getAbsoluteURL('/public.php/dav/files/' . $token . '/?accept=zip');