Skip to content

Commit

Permalink
don't convert link share to federated share if outgoing federated sha…
Browse files Browse the repository at this point in the history
…res are forbidden
  • Loading branch information
schiessle committed Jul 14, 2016
1 parent c7f6461 commit b972ba1
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,22 @@ public function createFederatedShare($shareWith, $token, $password = '') {
return new JSONResponse(['message' => $e->getHint()], Http::STATUS_BAD_REQUEST);
}

if (!$this->federatedShareProvider->isOutgoingServer2serverShareEnabled()) {
return new JSONResponse(
['message' => 'This server doesn\'t support outgoing federated shares'],
Http::STATUS_BAD_REQUEST
);
}

// make sure that user is authenticated in case of a password protected link
$storedPassword = $share->getPassword();
$authenticated = $this->session->get('public_link_authenticated') === $share->getId() ||
$this->shareManager->checkPassword($share, $password);
if (!empty($storedPassword) && !$authenticated ) {
return new JSONResponse(['message' => 'No permission to access the share'], Http::STATUS_BAD_REQUEST);
return new JSONResponse(
['message' => 'No permission to access the share'],
Http::STATUS_BAD_REQUEST
);
}

$share->setSharedWith($shareWith);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,26 @@ public function setUp() {
* @dataProvider dataTestCreateFederatedShare
*
* @param string $shareWith
* @param bool $outgoingSharesAllowed
* @param bool $validShareWith
* @param string $token
* @param bool $validToken
* @param bool $createSuccessful
* @param string $expectedReturnData
*/
public function testCreateFederatedShare($shareWith, $validShareWith, $token, $validToken, $createSuccessful, $expectedReturnData) {
public function testCreateFederatedShare($shareWith,
$outgoingSharesAllowed,
$validShareWith,
$token,
$validToken,
$createSuccessful,
$expectedReturnData
) {

$this->federatedShareProvider->expects($this->any())
->method('isOutgoingServer2serverShareEnabled')
->willReturn($outgoingSharesAllowed);

$this->addressHandler->expects($this->any())->method('splitUserRemote')
->with($shareWith)
->willReturnCallback(
Expand Down Expand Up @@ -154,7 +167,7 @@ function (IShare $share) use ($createSuccessful, $shareWith, $expectedReturnData

$result = $this->controller->createFederatedShare($shareWith, $token);

$errorCase = !$validShareWith || !$validToken || !$createSuccessful;
$errorCase = !$validShareWith || !$validToken || !$createSuccessful || !$outgoingSharesAllowed;

if ($errorCase) {
$this->assertSame(Http::STATUS_BAD_REQUEST, $result->getStatus());
Expand All @@ -171,15 +184,16 @@ function (IShare $share) use ($createSuccessful, $shareWith, $expectedReturnData

public function dataTestCreateFederatedShare() {
return [
//shareWith, validShareWith, token, validToken, createSuccessful, expectedReturnData
['user@server', true, 'token', true, true, 'server'],
['user@server', false, 'token', true, true, 'invalid federated cloud id'],
['user@server', false, 'token', false, true, 'invalid federated cloud id'],
['user@server', false, 'token', false, false, 'invalid federated cloud id'],
['user@server', false, 'token', true, false, 'invalid federated cloud id'],
['user@server', true, 'token', false, true, 'invalid token'],
['user@server', true, 'token', false, false, 'invalid token'],
['user@server', true, 'token', true, false, 'can not create share']
//shareWith, outgoingSharesAllowed, validShareWith, token, validToken, createSuccessful, expectedReturnData
['user@server', true, true, 'token', true, true, 'server'],
['user@server', true, false, 'token', true, true, 'invalid federated cloud id'],
['user@server', true, false, 'token', false, true, 'invalid federated cloud id'],
['user@server', true, false, 'token', false, false, 'invalid federated cloud id'],
['user@server', true, false, 'token', true, false, 'invalid federated cloud id'],
['user@server', true, true, 'token', false, true, 'invalid token'],
['user@server', true, true, 'token', false, false, 'invalid token'],
['user@server', true, true, 'token', true, false, 'can not create share'],
['user@server', false, true, 'token', true, true, 'This server doesn\'t support outgoing federated shares'],
];
}

Expand Down

0 comments on commit b972ba1

Please sign in to comment.