Skip to content

Commit 9a69b88

Browse files
authored
Merge pull request #26613 from nextcloud/enh/no_add_to_your_nc_file_drop
Do not allow adding file drop shares to your own cloud
2 parents 2866f4f + 241dfab commit 9a69b88

2 files changed

Lines changed: 23 additions & 10 deletions

File tree

apps/federatedfilesharing/lib/Controller/MountPublicLinkController.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
use OCP\AppFramework\Controller;
3838
use OCP\AppFramework\Http;
3939
use OCP\AppFramework\Http\JSONResponse;
40+
use OCP\Constants;
4041
use OCP\Federation\ICloudIdManager;
4142
use OCP\Http\Client\IClientService;
4243
use OCP\IL10N;
@@ -157,6 +158,15 @@ public function createFederatedShare($shareWith, $token, $password = '') {
157158
return $response;
158159
}
159160

161+
if (($share->getPermissions() & Constants::PERMISSION_READ) === 0) {
162+
$response = new JSONResponse(
163+
['message' => 'Mounting file drop not supported'],
164+
Http::STATUS_BAD_REQUEST
165+
);
166+
$response->throttle();
167+
return $response;
168+
}
169+
160170
$share->setSharedWith($shareWith);
161171
$share->setShareType(IShare::TYPE_REMOTE);
162172

apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ public function testCreateFederatedShare($shareWith,
139139
$token,
140140
$validToken,
141141
$createSuccessful,
142-
$expectedReturnData
142+
$expectedReturnData,
143+
$permissions
143144
) {
144145
$this->federatedShareProvider->expects($this->any())
145146
->method('isOutgoingServer2serverShareEnabled')
@@ -157,6 +158,7 @@ function ($shareWith) use ($validShareWith, $expectedReturnData) {
157158
);
158159

159160
$share = $this->share;
161+
$share->setPermissions($permissions);
160162

161163
$this->shareManager->expects($this->any())->method('getShareByToken')
162164
->with($token)
@@ -199,15 +201,16 @@ function (IShare $share) use ($createSuccessful, $shareWith, $expectedReturnData
199201
public function dataTestCreateFederatedShare() {
200202
return [
201203
//shareWith, outgoingSharesAllowed, validShareWith, token, validToken, createSuccessful, expectedReturnData
202-
['user@server', true, true, 'token', true, true, 'server'],
203-
['user@server', true, false, 'token', true, true, 'invalid federated cloud id'],
204-
['user@server', true, false, 'token', false, true, 'invalid federated cloud id'],
205-
['user@server', true, false, 'token', false, false, 'invalid federated cloud id'],
206-
['user@server', true, false, 'token', true, false, 'invalid federated cloud id'],
207-
['user@server', true, true, 'token', false, true, 'invalid token'],
208-
['user@server', true, true, 'token', false, false, 'invalid token'],
209-
['user@server', true, true, 'token', true, false, 'can not create share'],
210-
['user@server', false, true, 'token', true, true, 'This server doesn\'t support outgoing federated shares'],
204+
['user@server', true, true, 'token', true, true, 'server', 31],
205+
['user@server', true, true, 'token', false, false, 'server', 4],
206+
['user@server', true, false, 'token', true, true, 'invalid federated cloud id', 31],
207+
['user@server', true, false, 'token', false, true, 'invalid federated cloud id', 31],
208+
['user@server', true, false, 'token', false, false, 'invalid federated cloud id', 31],
209+
['user@server', true, false, 'token', true, false, 'invalid federated cloud id', 31],
210+
['user@server', true, true, 'token', false, true, 'invalid token', 31],
211+
['user@server', true, true, 'token', false, false, 'invalid token', 31],
212+
['user@server', true, true, 'token', true, false, 'can not create share', 31],
213+
['user@server', false, true, 'token', true, true, 'This server doesn\'t support outgoing federated shares', 31],
211214
];
212215
}
213216
}

0 commit comments

Comments
 (0)