summaryrefslogtreecommitdiffstats
path: root/apps/files_external/controller/userstoragescontroller.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/controller/userstoragescontroller.php')
-rw-r--r--apps/files_external/controller/userstoragescontroller.php42
1 files changed, 28 insertions, 14 deletions
diff --git a/apps/files_external/controller/userstoragescontroller.php b/apps/files_external/controller/userstoragescontroller.php
index f5d22e5caa6..5a5bff7ba70 100644
--- a/apps/files_external/controller/userstoragescontroller.php
+++ b/apps/files_external/controller/userstoragescontroller.php
@@ -30,8 +30,10 @@ use \OCP\AppFramework\Http\DataResponse;
use \OCP\AppFramework\Controller;
use \OCP\AppFramework\Http;
use \OCA\Files_external\Service\UserStoragesService;
+use \OCA\Files_External\Service\BackendService;
use \OCA\Files_external\NotFoundException;
use \OCA\Files_external\Lib\StorageConfig;
+use \OCA\Files_External\Lib\Backend\Backend;
/**
* User storages controller
@@ -69,17 +71,20 @@ class UserStoragesController extends StoragesController {
protected function validate(StorageConfig $storage) {
$result = parent::validate($storage);
- if ($result != null) {
+ if ($result !== null) {
return $result;
}
// Verify that the mount point applies for the current user
// Prevent non-admin users from mounting local storage and other disabled backends
- $allowedBackends = \OC_Mount_Config::getPersonalBackends();
- if (!isset($allowedBackends[$storage->getBackendClass()])) {
+ /** @var Backend */
+ $backend = $storage->getBackend();
+ if (!$backend->isVisibleFor(BackendService::VISIBILITY_PERSONAL)) {
return new DataResponse(
array(
- 'message' => (string)$this->l10n->t('Invalid storage backend "%s"', array($storage->getBackendClass()))
+ 'message' => (string)$this->l10n->t('Admin-only storage backend "%s"', [
+ $storage->getBackend()->getClass()
+ ])
),
Http::STATUS_UNPROCESSABLE_ENTITY
);
@@ -117,11 +122,15 @@ class UserStoragesController extends StoragesController {
$backendOptions,
$mountOptions
) {
- $newStorage = new StorageConfig();
- $newStorage->setMountPoint($mountPoint);
- $newStorage->setBackendClass($backendClass);
- $newStorage->setBackendOptions($backendOptions);
- $newStorage->setMountOptions($mountOptions);
+ $newStorage = $this->createStorage(
+ $mountPoint,
+ $backendClass,
+ $backendOptions,
+ $mountOptions
+ );
+ if ($newStorage instanceOf DataResponse) {
+ return $newStorage;
+ }
$response = $this->validate($newStorage);
if (!empty($response)) {
@@ -157,11 +166,16 @@ class UserStoragesController extends StoragesController {
$backendOptions,
$mountOptions
) {
- $storage = new StorageConfig($id);
- $storage->setMountPoint($mountPoint);
- $storage->setBackendClass($backendClass);
- $storage->setBackendOptions($backendOptions);
- $storage->setMountOptions($mountOptions);
+ $storage = $this->createStorage(
+ $mountPoint,
+ $backendClass,
+ $backendOptions,
+ $mountOptions
+ );
+ if ($storage instanceOf DataResponse) {
+ return $storage;
+ }
+ $storage->setId($id);
$response = $this->validate($storage);
if (!empty($response)) {