mirror of
https://github.com/nextcloud/passman.git
synced 2025-02-25 07:53:32 +08:00
catch error for using the same source and destination account in the credential mover
This commit is contained in:
parent
1e15710bdb
commit
11d774405b
3 changed files with 44 additions and 33 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
$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);
|
||||
}
|
||||
$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(){
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in a new issue