aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external/lib
diff options
context:
space:
mode:
authorVincent Petry <vincent@nextcloud.com>2021-12-06 11:18:59 +0100
committerVincent Petry <vincent@nextcloud.com>2021-12-15 09:15:31 +0100
commitea302975526ba8fcb5abcca76daa6038439d053e (patch)
treef00714de6e983897719b98cb3c56ed5476156823 /apps/files_external/lib
parenta47da9722dfaec8d83e9c8543ed0c31138a909da (diff)
downloadnextcloud-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')
-rw-r--r--apps/files_external/lib/Controller/GlobalStoragesController.php18
-rw-r--r--apps/files_external/lib/Controller/StoragesController.php20
-rw-r--r--apps/files_external/lib/Controller/UserGlobalStoragesController.php7
-rw-r--r--apps/files_external/lib/Controller/UserStoragesController.php16
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,