You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nextcloud-server/apps/files_sharing/lib/Controller/ExternalSharesController.php

61 lines
1.5 KiB

<?php
/**
* SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace OCA\Files_Sharing\Controller;
use OCA\Files_Sharing\External\Manager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
/**
* Class ExternalSharesController
*
* @package OCA\Files_Sharing\Controller
*/
class ExternalSharesController extends Controller {
public function __construct(
string $appName,
IRequest $request,
private readonly Manager $externalManager,
) {
parent::__construct($appName, $request);
}
/**
* @NoOutgoingFederatedSharingRequired
*/
#[NoAdminRequired]
public function index(): JSONResponse {
return new JSONResponse($this->externalManager->getOpenShares());
}
/**
* @NoOutgoingFederatedSharingRequired
*/
#[NoAdminRequired]
public function create(string $id): JSONResponse {
$externalShare = $this->externalManager->getShare($id);
if ($externalShare !== false) {
$this->externalManager->acceptShare($externalShare);
}
return new JSONResponse();
}
/**
* @NoOutgoingFederatedSharingRequired
*/
#[NoAdminRequired]
public function destroy(string $id): JSONResponse {
$externalShare = $this->externalManager->getShare($id);
if ($externalShare !== false) {
$this->externalManager->declineShare($externalShare);
}
return new JSONResponse();
}
}