Skip to content

Commit

Permalink
Extract updatePermissions and revoke
Browse files Browse the repository at this point in the history
  • Loading branch information
VicDeo authored and gitmate-bot committed Dec 5, 2018
1 parent 087c043 commit e19f65d
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 235 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,7 @@ public function reShare($id) {
list($user, $remote) = $this->addressHandler->splitUserRemote($shareWith);
$owner = $share->getShareOwner();
$currentServer = $this->addressHandler->generateRemoteURL();
if ($this->addressHandler->compareAddresses($user, $remote, $owner, $currentServer)
|| !$this->verifyShare($share, $token)
) {
if ($this->addressHandler->compareAddresses($user, $remote, $owner, $currentServer)) {
return new Result(null, Http::STATUS_FORBIDDEN);
}

Expand Down Expand Up @@ -380,99 +378,43 @@ public function unshare($id) {
* @return Result
*/
public function revoke($id) {
$token = $this->request->getParam('token');

$share = $this->federatedShareProvider->getShareById($id);
if (!$this->verifyShare($share, $token)) {
try {
$share = $this->getValidShare($id);
$this->fedShareManager->revoke($share);
} catch (\Exception $e) {
return new Result(null, Http::STATUS_BAD_REQUEST);
}

$this->federatedShareProvider->removeShareFromTable($share);
return new Result();
}

/**
* check if server-to-server sharing is enabled
*
* @param bool $incoming
*
* @return bool
*/
private function isS2SEnabled($incoming = false) {
$result = \OCP\App::isEnabled('files_sharing');

if ($incoming) {
$result = $result && $this->federatedShareProvider->isIncomingServer2serverShareEnabled();
} else {
$result = $result && $this->federatedShareProvider->isOutgoingServer2serverShareEnabled();
}

return $result;
}

/**
* check if we got the right share
*
* @param Share\IShare $share
* @param string $token
*
* @return bool
*/
protected function verifyShare(Share\IShare $share, $token) {
if (
$share->getShareType() === FederatedShareProvider::SHARE_TYPE_REMOTE &&
$share->getToken() === $token
) {
return true;
}

return false;
}

/**
* @NoCSRFRequired
* @PublicPage
*
* update share information to keep federated re-shares in sync
*
* @param array $params
* @param int $id
*
* @return Result
*/
public function updatePermissions($params) {
$id = (int)$params['id'];
$token = $this->request->getParam('token', null);
$permissions = $this->request->getParam('permissions', null);

public function updatePermissions($id) {
try {
$share = $this->federatedShareProvider->getShareById($id);
$validPermission = \ctype_digit($permissions);
$validToken = $this->verifyShare($share, $token);
if (!$validPermission || !$validToken) {
return new Result(null, Http::STATUS_BAD_REQUEST);
$permissions = $this->request->getParam('permissions', null);

$share = $this->getValidShare($id);
$validPermission = \ctype_digit((string)$permissions);
if (!$validPermission) {
throw new \Exception();
}
$this->updatePermissionsInDatabase($share, (int)$permissions);
} catch (Share\Exceptions\ShareNotFound $e) {
$this->fedShareManager->updatePermissions($share, (int)$permissions);
} catch (\Exception $e) {
return new Result(null, Http::STATUS_BAD_REQUEST);
}

return new Result();
}

/**
* update permissions in database
*
* @param IShare $share
* @param int $permissions
*/
protected function updatePermissionsInDatabase(IShare $share, $permissions) {
$query = $this->connection->getQueryBuilder();
$query->update('share')
->where($query->expr()->eq('id', $query->createNamedParameter($share->getId())))
->set('permissions', $query->createNamedParameter($permissions))
->execute();
}

/**
* Get share by id, validate it's type and token
*
Expand Down
32 changes: 31 additions & 1 deletion apps/federatedfilesharing/lib/FedShareManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ public function reShare(IShare $share, $remoteId, $shareWith, $permissions) {
(int)$result->getId(),
$remoteId
);
return $share;
return $result;
}

/**
Expand Down Expand Up @@ -305,6 +305,36 @@ public function unshare($shareRow) {
);
}

/**
* @param IShare $share
*
* @return void
*/
public function revoke(IShare $share) {
$this->federatedShareProvider->removeShareFromTable($share);
}

/**
* Update permissions
*
* @param IShare $share
* @param int $permissions
*
* @return void
*/
public function updatePermissions(IShare $share, $permissions) {
$query = $this->connection->getQueryBuilder();
$query->update($this->shareTable)
->where(
$query->expr()->eq(
'id',
$query->createNamedParameter($share->getId())
)
)
->set('permissions', $query->createNamedParameter($permissions))
->execute();
}

/**
* Publish a new activity
*
Expand Down
Loading

0 comments on commit e19f65d

Please sign in to comment.