Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrantje <brantje@gmail.com>2017-02-19 17:13:40 +0300
committerbrantje <brantje@gmail.com>2017-02-22 20:02:55 +0300
commit514cb569fba1ee7333f49d8adc4b7be6b52497b4 (patch)
tree6ba17ac4c2393d4d0ef50bcfefa6816427dbb18a /controller
parentca4f6dfeaf033a9161294ccf6999b96decf69bcd (diff)
Add feature to move vaults to other account
Diffstat (limited to 'controller')
-rw-r--r--controller/admincontroller.php103
1 files changed, 103 insertions, 0 deletions
diff --git a/controller/admincontroller.php b/controller/admincontroller.php
new file mode 100644
index 00000000..4830f040
--- /dev/null
+++ b/controller/admincontroller.php
@@ -0,0 +1,103 @@
+<?php
+/**
+ * Nextcloud - passman
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Sander Brand <brantje@gmail.com>
+ * @copyright Sander Brand 2016
+ */
+
+namespace OCA\Passman\Controller;
+
+use OCA\Passman\Db\CredentialRevision;
+use OCA\Passman\Service\CredentialRevisionService;
+use OCA\Passman\Service\FileService;
+use OCA\Passman\Service\VaultService;
+use OCP\IConfig;
+use OCP\IRequest;
+use OCP\AppFramework\Http\JSONResponse;
+use OCP\AppFramework\ApiController;
+use OCA\Passman\Service\CredentialService;
+use \OCP\App;
+
+class AdminController extends ApiController {
+ private $userId;
+ private $vaultService;
+ private $credentialService;
+ private $fileService;
+ private $revisionService;
+ private $config;
+
+ public function __construct($AppName,
+ IRequest $request,
+ $UserId,
+ VaultService $vaultService,
+ CredentialService $credentialService,
+ FileService $fileService,
+ CredentialRevisionService $revisionService,
+ IConfig $config
+ ) {
+ parent::__construct(
+ $AppName,
+ $request,
+ 'GET, POST, DELETE, PUT, PATCH, OPTIONS',
+ 'Authorization, Content-Type, Accept',
+ 86400);
+ $this->userId = $UserId;
+ $this->vaultService = $vaultService;
+ $this->credentialService = $credentialService;
+ $this->fileService = $fileService;
+ $this->revisionService = $revisionService;
+ $this->config = $config;
+ }
+
+
+ public function searchUser($term){
+ $um = \OC::$server->getUserManager();
+ $results = array();
+ $searchResult = $um->search($term);
+ foreach ($searchResult as $user){
+ array_push($results, array(
+ "value" => $user->getUID(),
+ "label" => $user->getDisplayName() . ' ('. $user->getBackendClassName() .')',
+ ));
+ }
+ return new JSONResponse($results);
+ }
+
+ public function moveCredentials($source_account, $destination_account){
+ $vaults = $this->vaultService->getByUser($source_account);
+ foreach ($vaults as $vault) {
+ $credentials = $this->credentialService->getCredentialsByVaultId($vault->getId(), $source_account);
+ foreach($credentials as $credential){
+ $revisions = $this->revisionService->getRevisions($credential->getId());
+ foreach ($revisions as $revision){
+ $r = new CredentialRevision();
+ $r->setId($revision['revision_id']);
+ $r->setGuid($revision['guid']);
+ $r->setCredentialId($credential->getId());
+ $r->setUserId($destination_account);
+ $r->setCreated($revision['created']);
+ $r->setCredentialData(base64_encode(json_encode($revision['credential_data'])));
+ $r->setEditedBy($revision['edited_by']);
+ $this->revisionService->updateRevision($r);
+ }
+
+ $c = $credential->jsonSerialize();
+ $c['user_id'] = $destination_account;
+ $this->credentialService->updateCredential($c, true);
+ }
+ $vault->setUserId($destination_account);
+ $this->vaultService->updateVault($vault);
+ }
+
+ $files = $this->fileService->getFilesFromUser($source_account);
+ foreach($files as $file){
+ $file->setUserId($destination_account);
+ $this->fileService->updateFile($file);
+ }
+ return new JSONResponse(array('success'=> true));
+ }
+} \ No newline at end of file