diff options
Diffstat (limited to 'apps/files_external/controller/userstoragescontroller.php')
-rw-r--r-- | apps/files_external/controller/userstoragescontroller.php | 42 |
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)) { |