diff options
author | Robin Appelman <icewind@owncloud.com> | 2016-01-19 14:16:11 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2016-01-29 14:51:30 +0100 |
commit | 860d51487b103f4c050d2427c35ee70dd4b2b05e (patch) | |
tree | a59988eaaba438fa2fa5dbb6ac574d81cc2fb047 /apps/files_external/controller | |
parent | f3e9729a5f68fa36ee6633955b7913f37e1c890e (diff) | |
download | nextcloud-server-860d51487b103f4c050d2427c35ee70dd4b2b05e.tar.gz nextcloud-server-860d51487b103f4c050d2427c35ee70dd4b2b05e.zip |
Allow setting user provided credentials from the personal settings page
Diffstat (limited to 'apps/files_external/controller')
3 files changed, 49 insertions, 3 deletions
diff --git a/apps/files_external/controller/storagescontroller.php b/apps/files_external/controller/storagescontroller.php index 64b989f0c77..b09774ef515 100644 --- a/apps/files_external/controller/storagescontroller.php +++ b/apps/files_external/controller/storagescontroller.php @@ -25,6 +25,7 @@ namespace OCA\Files_External\Controller; use \OCP\IConfig; +use OCP\IUser; use \OCP\IUserSession; use \OCP\IRequest; use \OCP\IL10N; @@ -114,6 +115,7 @@ abstract class StoragesController extends Controller { $priority ); } catch (\InvalidArgumentException $e) { + \OC::$server->getLogger()->logException($e); return new DataResponse( [ 'message' => (string)$this->l10n->t('Invalid backend or authentication mechanism class') diff --git a/apps/files_external/controller/usercredentialscontroller.php b/apps/files_external/controller/usercredentialscontroller.php index bc514cba088..5153189d9c3 100644 --- a/apps/files_external/controller/usercredentialscontroller.php +++ b/apps/files_external/controller/usercredentialscontroller.php @@ -21,12 +21,19 @@ 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 Controller { +class UserCredentialsController extends StoragesController { /** * @var UserProvided */ @@ -37,10 +44,22 @@ class UserCredentialsController extends Controller { */ private $userSession; - public function __construct($appName, IRequest $request, UserProvided $authMechanism, IUserSession $userSession) { - parent::__construct($appName, $request); + /** + * @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; } /** @@ -49,8 +68,32 @@ class UserCredentialsController extends Controller { * @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/userstoragescontroller.php b/apps/files_external/controller/userstoragescontroller.php index 741e906dec1..ccf8bc24e09 100644 --- a/apps/files_external/controller/userstoragescontroller.php +++ b/apps/files_external/controller/userstoragescontroller.php @@ -25,6 +25,7 @@ namespace OCA\Files_External\Controller; use OCA\Files_External\Lib\Auth\AuthMechanism; use \OCP\IConfig; +use OCP\IUser; use \OCP\IUserSession; use \OCP\IRequest; use \OCP\IL10N; |