summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2020-05-18 15:45:56 +0200
committerGitHub <noreply@github.com>2020-05-18 15:45:56 +0200
commitca276a9d60c74efcb65fded60ab34cf941ca6f02 (patch)
tree57fb85e09048ecfb18b76b7903baf297daef87a5
parent1bba7de28f9b44d4160209bc0e849a19d940b877 (diff)
parent8289565bc7d19f571899263fd76d2c3cc7484e75 (diff)
downloadnextcloud-server-ca276a9d60c74efcb65fded60ab34cf941ca6f02.tar.gz
nextcloud-server-ca276a9d60c74efcb65fded60ab34cf941ca6f02.zip
Merge pull request #20846 from nextcloud/fix/link_fed_perm
Link permissions
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php19
-rw-r--r--apps/files_sharing/tests/ApiTest.php3
-rw-r--r--build/integration/sharing_features/sharing-v1.feature4
3 files changed, 14 insertions, 12 deletions
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 49320d57f16..0fbd57b4713 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -216,15 +216,6 @@ class ShareAPIController extends OCSController {
$result['expiration'] = $expiration->format('Y-m-d 00:00:00');
}
- // TODO: It might make sense to have a dedicated setting to allow/deny converting link shares into federated ones
- // For link shares, we need to have the PERMISSION_SHARE if federated is enabled
- if ($this->shareManager->outgoingServer2ServerSharesAllowed()) {
- if ($share->getShareType() === IShare::TYPE_LINK
- || $share->getShareType() === IShare::TYPE_EMAIL) {
- $result['permissions'] |= Constants::PERMISSION_SHARE;
- }
- }
-
if ($share->getShareType() === IShare::TYPE_USER) {
$sharedWith = $this->userManager->get($share->getSharedWith());
$result['share_with'] = $share->getSharedWith();
@@ -511,6 +502,11 @@ class ShareAPIController extends OCSController {
$permissions = Constants::PERMISSION_READ;
}
+ // TODO: It might make sense to have a dedicated setting to allow/deny converting link shares into federated ones
+ if (($permissions & Constants::PERMISSION_READ) && $this->shareManager->outgoingServer2ServerSharesAllowed()) {
+ $permissions |= Constants::PERMISSION_SHARE;
+ }
+
$share->setPermissions($permissions);
// Set password
@@ -1055,6 +1051,11 @@ class ShareAPIController extends OCSController {
}
if ($newPermissions !== null) {
+ // TODO: It might make sense to have a dedicated setting to allow/deny converting link shares into federated ones
+ if (($newPermissions & Constants::PERMISSION_READ) && $this->shareManager->outgoingServer2ServerSharesAllowed()) {
+ $newPermissions |= Constants::PERMISSION_SHARE;
+ }
+
$share->setPermissions($newPermissions);
$permissions = $newPermissions;
}
diff --git a/apps/files_sharing/tests/ApiTest.php b/apps/files_sharing/tests/ApiTest.php
index 365ea8dcb8e..9e7d8e5c693 100644
--- a/apps/files_sharing/tests/ApiTest.php
+++ b/apps/files_sharing/tests/ApiTest.php
@@ -999,7 +999,8 @@ class ApiTest extends TestCase {
\OCP\Constants::PERMISSION_READ |
\OCP\Constants::PERMISSION_CREATE |
\OCP\Constants::PERMISSION_UPDATE |
- \OCP\Constants::PERMISSION_DELETE,
+ \OCP\Constants::PERMISSION_DELETE |
+ \OCP\Constants::PERMISSION_SHARE,
$share1->getPermissions()
);
diff --git a/build/integration/sharing_features/sharing-v1.feature b/build/integration/sharing_features/sharing-v1.feature
index eb8006e565b..51a627dc6de 100644
--- a/build/integration/sharing_features/sharing-v1.feature
+++ b/build/integration/sharing_features/sharing-v1.feature
@@ -195,7 +195,7 @@ Feature: sharing
| share_type | 3 |
| file_source | A_NUMBER |
| file_target | /FOLDER |
- | permissions | 15 |
+ | permissions | 31 |
| stime | A_NUMBER |
| token | A_TOKEN |
| storage | A_NUMBER |
@@ -259,7 +259,7 @@ Feature: sharing
| share_type | 3 |
| file_source | A_NUMBER |
| file_target | /FOLDER |
- | permissions | 15 |
+ | permissions | 31 |
| stime | A_NUMBER |
| token | A_TOKEN |
| storage | A_NUMBER |