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:
authorbinsky <timo@binsky.org>2021-04-03 14:21:34 +0300
committerbinsky <timo@binsky.org>2021-04-03 14:35:39 +0300
commit11d774405be2af4d4dcfa3a5d84c04b8968e221c (patch)
tree459216199b4b3fb25b6b62546ec894ec831459c9
parent1e15710bdb6ff654409b8e9f2a26e556f4c292b1 (diff)
catch error for using the same source and destination account in the credential mover
-rw-r--r--controller/admincontroller.php59
-rw-r--r--js/settings-admin.js13
-rw-r--r--templates/admin.php3
3 files changed, 43 insertions, 32 deletions
diff --git a/controller/admincontroller.php b/controller/admincontroller.php
index 8545b185..5d072f1b 100644
--- a/controller/admincontroller.php
+++ b/controller/admincontroller.php
@@ -79,38 +79,43 @@ class AdminController extends ApiController {
}
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);
+ $succeed = false;
+ if ($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;
+ $c['icon'] = json_encode($c['icon']);
+ $this->credentialService->updateCredential($c, true);
}
+ $vault->setUserId($destination_account);
+ $this->vaultService->updateVault($vault);
+ }
- $c = $credential->jsonSerialize();
- $c['user_id'] = $destination_account;
- $c['icon'] = json_encode($c['icon']);
- $this->credentialService->updateCredential($c, true);
+ $files = $this->fileService->getFilesFromUser($source_account);
+ foreach ($files as $file) {
+ $file->setUserId($destination_account);
+ $this->fileService->updateFile($file);
}
- $vault->setUserId($destination_account);
- $this->vaultService->updateVault($vault);
+ $succeed = true;
}
- $files = $this->fileService->getFilesFromUser($source_account);
- foreach ($files as $file) {
- $file->setUserId($destination_account);
- $this->fileService->updateFile($file);
- }
- return new JSONResponse(array('success' => true));
+ return new JSONResponse(array('success' => $succeed));
}
public function listRequests(){
diff --git a/js/settings-admin.js b/js/settings-admin.js
index 50146b07..c9d4f32b 100644
--- a/js/settings-admin.js
+++ b/js/settings-admin.js
@@ -174,12 +174,17 @@ $(document).ready(function () {
$(self).html('<i class="fa fa-spinner fa-spin"></i> ' + OC.L10N.translate('passman', 'Moving') + '...');
if (accountMover.source_account && accountMover.destination_account) {
$.post(OC.generateUrl('apps/passman/admin/move'), accountMover, function (data) {
+ $(self).removeAttr('disabled');
+ $(self).html('Move');
if (data.success) {
- $(self).removeAttr('disabled');
- $(self).html('Move');
- $('#moveStatus').fadeIn();
+ $('#moveStatusSucceeded').fadeIn();
setTimeout(function () {
- $('#moveStatus').fadeOut();
+ $('#moveStatusSucceeded').fadeOut();
+ }, 3500);
+ } else {
+ $('#moveStatusFailed').fadeIn();
+ setTimeout(function () {
+ $('#moveStatusFailed').fadeOut();
}, 3500);
}
});
diff --git a/templates/admin.php b/templates/admin.php
index 84918eab..71b38e9d 100644
--- a/templates/admin.php
+++ b/templates/admin.php
@@ -131,7 +131,8 @@ style('passman', 'vendor/font-awesome/font-awesome.min');
</tr>
</table>
<button class="success" id="move_credentials">Move</button>
- <span id="moveStatus" style="display: none;"><?php p($l->t('Credentials moved!')); ?></span>
+ <span id="moveStatusSucceeded" style="display: none;"><?php p($l->t('Credentials moved!')); ?></span>
+ <span id="moveStatusFailed" style="display: none;"><?php p($l->t('An error occurred!')); ?></span>
</div>
<div id="tabs-3">