diff options
author | Vincent Petry <vincent@nextcloud.com> | 2021-12-06 11:18:59 +0100 |
---|---|---|
committer | Vincent Petry <vincent@nextcloud.com> | 2021-12-15 09:15:31 +0100 |
commit | ea302975526ba8fcb5abcca76daa6038439d053e (patch) | |
tree | f00714de6e983897719b98cb3c56ed5476156823 /apps/files_external/lib | |
parent | a47da9722dfaec8d83e9c8543ed0c31138a909da (diff) | |
download | nextcloud-server-ea302975526ba8fcb5abcca76daa6038439d053e.tar.gz nextcloud-server-ea302975526ba8fcb5abcca76daa6038439d053e.zip |
Add option to disallow creation of local storages
Introduce a new config option to prevent web UI admins to create
or edit external storages of type "local".
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Diffstat (limited to 'apps/files_external/lib')
4 files changed, 54 insertions, 7 deletions
diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php index 53173f88ee5..89939640acc 100644 --- a/apps/files_external/lib/Controller/GlobalStoragesController.php +++ b/apps/files_external/lib/Controller/GlobalStoragesController.php @@ -31,6 +31,7 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; +use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; @@ -51,6 +52,7 @@ class GlobalStoragesController extends StoragesController { * @param ILogger $logger * @param IUserSession $userSession * @param IGroupManager $groupManager + * @param IConfig $config */ public function __construct( $AppName, @@ -59,7 +61,8 @@ class GlobalStoragesController extends StoragesController { GlobalStoragesService $globalStoragesService, ILogger $logger, IUserSession $userSession, - IGroupManager $groupManager + IGroupManager $groupManager, + IConfig $config ) { parent::__construct( $AppName, @@ -68,7 +71,8 @@ class GlobalStoragesController extends StoragesController { $globalStoragesService, $logger, $userSession, - $groupManager + $groupManager, + $config ); } @@ -96,6 +100,16 @@ class GlobalStoragesController extends StoragesController { $applicableGroups, $priority ) { + $canCreateNewLocalStorage = $this->config->getSystemValue('files_external_allow_create_new_local', true); + if (!$canCreateNewLocalStorage && $backend === 'local') { + return new DataResponse( + [ + 'message' => $this->l10n->t('Forbidden to manage local mounts') + ], + Http::STATUS_FORBIDDEN + ); + } + $newStorage = $this->createStorage( $mountPoint, $backend, diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index 47021bd7d11..b82d2a4a4c7 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -39,6 +39,7 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\Files\StorageNotAvailableException; +use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; @@ -80,6 +81,11 @@ abstract class StoragesController extends Controller { protected $groupManager; /** + * @var IConfig + */ + protected $config; + + /** * Creates a new storages controller. * * @param string $AppName application name @@ -95,7 +101,8 @@ abstract class StoragesController extends Controller { StoragesService $storagesService, ILogger $logger, IUserSession $userSession, - IGroupManager $groupManager + IGroupManager $groupManager, + IConfig $config ) { parent::__construct($AppName, $request); $this->l10n = $l10n; @@ -103,6 +110,7 @@ abstract class StoragesController extends Controller { $this->logger = $logger; $this->userSession = $userSession; $this->groupManager = $groupManager; + $this->config = $config; } /** @@ -129,6 +137,16 @@ abstract class StoragesController extends Controller { $applicableGroups = null, $priority = null ) { + $canCreateNewLocalStorage = $this->config->getSystemValue('files_external_allow_create_new_local', true); + if (!$canCreateNewLocalStorage && $backend === 'local') { + return new DataResponse( + [ + 'message' => $this->l10n->t('Forbidden to manage local mounts') + ], + Http::STATUS_FORBIDDEN + ); + } + try { return $this->service->createStorage( $mountPoint, diff --git a/apps/files_external/lib/Controller/UserGlobalStoragesController.php b/apps/files_external/lib/Controller/UserGlobalStoragesController.php index 02fd563df0f..74424bce006 100644 --- a/apps/files_external/lib/Controller/UserGlobalStoragesController.php +++ b/apps/files_external/lib/Controller/UserGlobalStoragesController.php @@ -36,6 +36,7 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\UserGlobalStoragesService; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; +use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; @@ -64,7 +65,8 @@ class UserGlobalStoragesController extends StoragesController { UserGlobalStoragesService $userGlobalStoragesService, ILogger $logger, IUserSession $userSession, - IGroupManager $groupManager + IGroupManager $groupManager, + IConfig $config ) { parent::__construct( $AppName, @@ -73,7 +75,8 @@ class UserGlobalStoragesController extends StoragesController { $userGlobalStoragesService, $logger, $userSession, - $groupManager + $groupManager, + $config ); } diff --git a/apps/files_external/lib/Controller/UserStoragesController.php b/apps/files_external/lib/Controller/UserStoragesController.php index 4032ba1d96c..c0a460fd8e3 100644 --- a/apps/files_external/lib/Controller/UserStoragesController.php +++ b/apps/files_external/lib/Controller/UserStoragesController.php @@ -35,6 +35,7 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; +use OCP\IConfig; use OCP\IGroupManager; use OCP\IL10N; use OCP\ILogger; @@ -63,7 +64,8 @@ class UserStoragesController extends StoragesController { UserStoragesService $userStoragesService, ILogger $logger, IUserSession $userSession, - IGroupManager $groupManager + IGroupManager $groupManager, + IConfig $config ) { parent::__construct( $AppName, @@ -72,7 +74,8 @@ class UserStoragesController extends StoragesController { $userStoragesService, $logger, $userSession, - $groupManager + $groupManager, + $config ); } @@ -127,6 +130,15 @@ class UserStoragesController extends StoragesController { $backendOptions, $mountOptions ) { + $canCreateNewLocalStorage = $this->config->getSystemValue('files_external_allow_create_new_local', true); + if (!$canCreateNewLocalStorage && $backend === 'local') { + return new DataResponse( + [ + 'message' => $this->l10n->t('Forbidden to manage local mounts') + ], + Http::STATUS_FORBIDDEN + ); + } $newStorage = $this->createStorage( $mountPoint, $backend, |