mirror of
https://github.com/nextcloud/server.git
synced 2026-06-12 10:10:49 -04:00
Link shares have reshare permission if outgoing federated shares are enabled
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
703fca8ec6
commit
f50bf10bec
3 changed files with 13 additions and 12 deletions
|
|
@ -470,15 +470,18 @@ class ShareAPIController extends OCSController {
|
|||
throw new OCSNotFoundException($this->l->t('Public upload is only possible for publicly shared folders'));
|
||||
}
|
||||
|
||||
$share->setPermissions(
|
||||
Constants::PERMISSION_READ |
|
||||
$permissions = Constants::PERMISSION_READ |
|
||||
Constants::PERMISSION_CREATE |
|
||||
Constants::PERMISSION_UPDATE |
|
||||
Constants::PERMISSION_DELETE
|
||||
);
|
||||
Constants::PERMISSION_DELETE;
|
||||
} else {
|
||||
$share->setPermissions(Constants::PERMISSION_READ);
|
||||
$permissions = Constants::PERMISSION_READ;
|
||||
}
|
||||
// TODO: It might make sense to have a dedicated setting to allow/deny converting link shares into federated ones
|
||||
if ($this->shareManager->outgoingServer2ServerSharesAllowed()) {
|
||||
$permissions |= Constants::PERMISSION_SHARE;
|
||||
}
|
||||
$share->setPermissions($permissions);
|
||||
|
||||
// Set password
|
||||
if ($password !== '') {
|
||||
|
|
|
|||
|
|
@ -203,7 +203,9 @@ class ApiTest extends TestCase {
|
|||
$ocs->cleanup();
|
||||
|
||||
$data = $result->getData();
|
||||
$this->assertEquals(1, $data['permissions']);
|
||||
$this->assertEquals(\OCP\Constants::PERMISSION_READ |
|
||||
\OCP\Constants::PERMISSION_SHARE,
|
||||
$data['permissions']);
|
||||
$this->assertEmpty($data['expiration']);
|
||||
$this->assertTrue(is_string($data['token']));
|
||||
|
||||
|
|
@ -228,7 +230,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,
|
||||
$data['permissions']
|
||||
);
|
||||
$this->assertEmpty($data['expiration']);
|
||||
|
|
|
|||
|
|
@ -537,11 +537,6 @@ class Manager implements IManager {
|
|||
throw new \Exception('Link sharing is not allowed');
|
||||
}
|
||||
|
||||
// Link shares by definition can't have share permissions
|
||||
if ($share->getPermissions() & \OCP\Constants::PERMISSION_SHARE) {
|
||||
throw new \InvalidArgumentException('Link shares can’t have reshare permissions');
|
||||
}
|
||||
|
||||
// Check if public upload is allowed
|
||||
if (!$this->shareApiLinkAllowPublicUpload() &&
|
||||
($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE))) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue