From 8da0ea69b587ee47060b1f25f8b224fa4db6eff5 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 11 May 2021 16:09:25 +0200 Subject: [PATCH] Respect default share permissions for federated reshares Signed-off-by: Roeland Jago Douma --- .../lib/ocm/CloudFederationProviderFiles.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php index dafdd6d302..bd239869ef 100644 --- a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php +++ b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php @@ -45,6 +45,7 @@ use OCP\Federation\ICloudFederationProviderManager; use OCP\Federation\ICloudFederationShare; use OCP\Federation\ICloudIdManager; use OCP\Files\NotFoundException; +use OCP\IConfig; use OCP\IDBConnection; use OCP\IGroupManager; use OCP\ILogger; @@ -101,6 +102,9 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { /** @var IGroupManager */ private $groupManager; + /** @var IConfig */ + private $config; + /** * CloudFederationProvider constructor. * @@ -132,7 +136,8 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { ICloudFederationFactory $cloudFederationFactory, ICloudFederationProviderManager $cloudFederationProviderManager, IDBConnection $connection, - IGroupManager $groupManager + IGroupManager $groupManager, + IConfig $config ) { $this->appManager = $appManager; $this->federatedShareProvider = $federatedShareProvider; @@ -148,6 +153,7 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { $this->cloudFederationProviderManager = $cloudFederationProviderManager; $this->connection = $connection; $this->groupManager = $groupManager; + $this->config = $config; } @@ -636,6 +642,11 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { $senderId = $notification['senderId']; $share = $this->federatedShareProvider->getShareById($id); + + // We have to respect the default share permissions + $permissions = $share->getPermissions() & (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL); + $share->setPermissions($permissions); + // don't allow to share a file back to the owner try { list($user, $remote) = $this->addressHandler->splitUserRemote($shareWith);