diff options
Diffstat (limited to 'apps/files_external/controller')
-rw-r--r-- | apps/files_external/controller/usercredentialscontroller.php | 99 | ||||
-rw-r--r-- | apps/files_external/controller/userglobalstoragescontroller.php | 50 |
2 files changed, 49 insertions, 100 deletions
diff --git a/apps/files_external/controller/usercredentialscontroller.php b/apps/files_external/controller/usercredentialscontroller.php deleted file mode 100644 index 5153189d9c3..00000000000 --- a/apps/files_external/controller/usercredentialscontroller.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php -/** - * @author Robin Appelman <icewind@owncloud.com> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -namespace OCA\Files_External\Controller; - -use OCA\Calendar\Sabre\Backend; -use OCA\Files_External\Lib\Auth\AuthMechanism; -use OCA\Files_External\Lib\Auth\Password\UserProvided; -use OCA\Files_external\Lib\StorageConfig; -use OCA\Files_External\Service\UserGlobalStoragesService; -use OCP\AppFramework\Controller; -use OCP\AppFramework\Http; -use OCP\AppFramework\Http\DataResponse; -use OCP\IL10N; -use OCP\IRequest; -use OCP\IUserSession; - -class UserCredentialsController extends StoragesController { - /** - * @var UserProvided - */ - private $authMechanism; - - /** - * @var IUserSession - */ - private $userSession; - - /** - * @var UserGlobalStoragesService - */ - private $globalStoragesService; - - public function __construct( - $appName, IRequest $request, - UserProvided $authMechanism, - IUserSession $userSession, - IL10N $l10n, - UserGlobalStoragesService $globalStoragesService - ) { - parent::__construct($appName, $request, $l10n, $globalStoragesService); - $this->authMechanism = $authMechanism; - $this->userSession = $userSession; - $this->globalStoragesService = $globalStoragesService; - } - - /** - * @param int $storageId - * @param string $username - * @param string $password - * - * @NoAdminRequired - * @return DataResponse - */ - public function store($storageId, $username, $password) { - $this->authMechanism->saveCredentials($this->userSession->getUser(), $storageId, $username, $password); - - $storage = $this->globalStoragesService->getStorage($storageId); - - $this->updateStorageStatus($storage); - - $storage->setBackendOptions([]); - $storage->setMountOptions([]); - $this->manipulateStorageConfig($storage); - - - return new DataResponse( - $storage, - Http::STATUS_OK - ); - } - - protected function manipulateStorageConfig(StorageConfig $storage) { - /** @var AuthMechanism */ - $authMechanism = $storage->getAuthMechanism(); - $authMechanism->manipulateStorageConfig($storage, $this->userSession->getUser()); - /** @var Backend */ - $backend = $storage->getBackend(); - $backend->manipulateStorageConfig($storage, $this->userSession->getUser()); - } -} diff --git a/apps/files_external/controller/userglobalstoragescontroller.php b/apps/files_external/controller/userglobalstoragescontroller.php index 97b5c90e20c..5031d3c46bd 100644 --- a/apps/files_external/controller/userglobalstoragescontroller.php +++ b/apps/files_external/controller/userglobalstoragescontroller.php @@ -22,12 +22,12 @@ namespace OCA\Files_External\Controller; use OCA\Files_External\Lib\Auth\AuthMechanism; +use OCA\Files_External\Lib\Auth\IUserProvided; use OCA\Files_External\Lib\Auth\Password\UserProvided; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; use \OCP\IRequest; use \OCP\IL10N; use \OCP\AppFramework\Http\DataResponse; -use \OCP\AppFramework\Controller; use \OCP\AppFramework\Http; use \OCA\Files_external\Service\UserGlobalStoragesService; use \OCA\Files_external\NotFoundException; @@ -130,6 +130,54 @@ class UserGlobalStoragesController extends StoragesController { } /** + * Update an external storage entry. + * Only allows setting user provided backend fields + * + * @param int $id storage id + * @param array $backendOptions backend-specific options + * + * @return DataResponse + * + * @NoAdminRequired + */ + public function update( + $id, + $backendOptions + ) { + try { + $storage = $this->service->getStorage($id); + $authMechanism = $storage->getAuthMechanism(); + if ($authMechanism instanceof IUserProvided) { + $authMechanism->saveBackendOptions($this->userSession->getUser(), $id, $backendOptions); + $authMechanism->manipulateStorageConfig($storage, $this->userSession->getUser()); + } else { + return new DataResponse( + [ + 'message' => (string)$this->l10n->t('Storage with id "%i" is not user editable', array($id)) + ], + Http::STATUS_FORBIDDEN + ); + } + } catch (NotFoundException $e) { + return new DataResponse( + [ + 'message' => (string)$this->l10n->t('Storage with id "%i" not found', array($id)) + ], + Http::STATUS_NOT_FOUND + ); + } + + $this->updateStorageStatus($storage); + $this->sanitizeStorage($storage); + + return new DataResponse( + $storage, + Http::STATUS_OK + ); + + } + + /** * Remove sensitive data from a StorageConfig before returning it to the user * * @param StorageConfig $storage |