summaryrefslogtreecommitdiffstats
path: root/apps/files_external/controller
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2016-01-19 14:16:11 +0100
committerRobin Appelman <icewind@owncloud.com>2016-01-29 14:51:30 +0100
commit860d51487b103f4c050d2427c35ee70dd4b2b05e (patch)
treea59988eaaba438fa2fa5dbb6ac574d81cc2fb047 /apps/files_external/controller
parentf3e9729a5f68fa36ee6633955b7913f37e1c890e (diff)
downloadnextcloud-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')
-rw-r--r--apps/files_external/controller/storagescontroller.php2
-rw-r--r--apps/files_external/controller/usercredentialscontroller.php49
-rw-r--r--apps/files_external/controller/userstoragescontroller.php1
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;