Skip to content

Commit 628b0d8

Browse files
authored
Merge pull request #35213 from PLUTEX/32611-ocs-api-share-permissions
Honor permissions of new link share via OCS API
2 parents ff2b8ca + a7abe2c commit 628b0d8

3 files changed

Lines changed: 13 additions & 9 deletions

File tree

apps/files_sharing/lib/Controller/ShareAPIController.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,14 @@ public function createShare(
478478
$share = $this->shareManager->newShare();
479479

480480
if ($permissions === null) {
481-
$permissions = (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL);
481+
if ($shareType === IShare::TYPE_LINK
482+
|| $shareType === IShare::TYPE_EMAIL) {
483+
484+
// to keep legacy default behaviour, we ignore the setting below for link shares
485+
$permissions = Constants::PERMISSION_READ;
486+
} else {
487+
$permissions = (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL);
488+
}
482489
}
483490

484491
// Verify path
@@ -581,8 +588,6 @@ public function createShare(
581588
Constants::PERMISSION_CREATE |
582589
Constants::PERMISSION_UPDATE |
583590
Constants::PERMISSION_DELETE;
584-
} else {
585-
$permissions = Constants::PERMISSION_READ;
586591
}
587592

588593
// TODO: It might make sense to have a dedicated setting to allow/deny converting link shares into federated ones

apps/files_sharing/tests/ApiTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,7 @@ public function testCreateShareLink() {
211211
$ocs->cleanup();
212212

213213
$data = $result->getData();
214-
$this->assertEquals(\OCP\Constants::PERMISSION_READ |
215-
\OCP\Constants::PERMISSION_SHARE,
214+
$this->assertEquals(\OCP\Constants::PERMISSION_ALL,
216215
$data['permissions']);
217216
$this->assertEmpty($data['expiration']);
218217
$this->assertTrue(is_string($data['token']));

apps/files_sharing/tests/Controller/ShareAPIControllerTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2055,7 +2055,7 @@ public function testCreateShareLinkPassword() {
20552055
$this->callback(function (\OCP\Share\IShare $share) use ($path) {
20562056
return $share->getNode() === $path &&
20572057
$share->getShareType() === IShare::TYPE_LINK &&
2058-
$share->getPermissions() === \OCP\Constants::PERMISSION_READ &&
2058+
$share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
20592059
$share->getSharedBy() === 'currentUser' &&
20602060
$share->getPassword() === 'password' &&
20612061
$share->getExpirationDate() === null;
@@ -2095,7 +2095,7 @@ public function testCreateShareLinkSendPasswordByTalk() {
20952095
$this->callback(function (\OCP\Share\IShare $share) use ($path) {
20962096
return $share->getNode() === $path &&
20972097
$share->getShareType() === IShare::TYPE_LINK &&
2098-
$share->getPermissions() === \OCP\Constants::PERMISSION_READ &&
2098+
$share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
20992099
$share->getSharedBy() === 'currentUser' &&
21002100
$share->getPassword() === 'password' &&
21012101
$share->getSendPasswordByTalk() === true &&
@@ -2179,15 +2179,15 @@ public function testCreateShareValidExpireDate() {
21792179

21802180
return $share->getNode() === $path &&
21812181
$share->getShareType() === IShare::TYPE_LINK &&
2182-
$share->getPermissions() === \OCP\Constants::PERMISSION_READ &&
2182+
$share->getPermissions() === \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE &&
21832183
$share->getSharedBy() === 'currentUser' &&
21842184
$share->getPassword() === null &&
21852185
$share->getExpirationDate() == $date;
21862186
})
21872187
)->willReturnArgument(0);
21882188

21892189
$expected = new DataResponse([]);
2190-
$result = $ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, IShare::TYPE_LINK, null, 'false', '', null, '2000-01-01');
2190+
$result = $ocs->createShare('valid-path', null, IShare::TYPE_LINK, null, 'false', '', null, '2000-01-01');
21912191

21922192
$this->assertInstanceOf(get_class($expected), $result);
21932193
$this->assertEquals($expected->getData(), $result->getData());

0 commit comments

Comments
 (0)