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
path: root/js
diff options
context:
space:
mode:
authorbrantje <brantje@gmail.com>2017-02-05 18:12:37 +0300
committerbrantje <brantje@gmail.com>2017-02-05 19:25:20 +0300
commit0af5e1f6210ac5f44ae875d0e62b85f87a44f5c4 (patch)
tree60a9a64bf9f3bb9bc0e788dbda3da783cdb3d87f /js
parent45d7a10fcefb1421fab8a49933b9868c951ba4b8 (diff)
Fix shared credentials not updated
Diffstat (limited to 'js')
-rw-r--r--js/app/controllers/settings.js39
-rw-r--r--js/app/services/credentialservice.js11
2 files changed, 23 insertions, 27 deletions
diff --git a/js/app/controllers/settings.js b/js/app/controllers/settings.js
index fa28efa5..01b17d2a 100644
--- a/js/app/controllers/settings.js
+++ b/js/app/controllers/settings.js
@@ -154,30 +154,6 @@
VaultService.getVault($scope.active_vault).then(callback);
};
- var decryptOwnCredentials = function (vault) {
- var _selected_credentials = [];
- if (vault.credentials.length === 0) {
- $location.path('/');
- }
- for (var i = 0; i < vault.credentials.length; i++) {
- var _credential = vault.credentials[i];
- var isShared = (_credential.shared_key === null || _credential.shared_key === '');
- if ( isShared || !_credential.hasOwnProperty('acl')) {
- var _success;
- try {
- CredentialService.decryptCredential(_credential, VaultService.getActiveVault().vaultKey);
- _success = true;
- } catch (e) {
- _success = false;
- }
- if (_success) {
- _selected_credentials.push(_credential);
- }
- }
- }
- return _selected_credentials;
- };
-
$scope.startScan = function (minStrength) {
getCurrentVaultCredentials(function (vault) {
var results = [];
@@ -224,6 +200,7 @@
$scope.changeVaultPassword = function (oldVaultPass, newVaultPass, newVaultPass2) {
+ $scope.error = '';
if (oldVaultPass !== VaultService.getActiveVault().vaultKey) {
$scope.error = $translate.instant('incorrect.password');
return;
@@ -235,14 +212,24 @@
SettingsService.setSetting('defaultVault', null);
SettingsService.setSetting('defaultVaultPass', null);
VaultService.getVault($scope.active_vault).then(function (vault) {
- var _selected_credentials = decryptOwnCredentials(vault);
+ jQuery('input').attr('disabled', true);
+ jQuery('button').attr('disabled', true);
+ var _selected_credentials = angular.copy(vault.credentials);
$scope.change_pw = {
percent: 0,
done: 0,
total: _selected_credentials.length
};
var changeCredential = function (index, oldVaultPass, newVaultPass) {
- CredentialService.reencryptCredential(_selected_credentials[index].guid, oldVaultPass, newVaultPass).progress(function (data) {
+ var usedKey = oldVaultPass;
+
+ if (_selected_credentials[index].hasOwnProperty('shared_key')) {
+ if (_selected_credentials[index].shared_key) {
+ usedKey = EncryptService.decryptString(angular.copy(_selected_credentials[index].shared_key), oldVaultPass);
+ }
+ }
+
+ CredentialService.reencryptCredential(_selected_credentials[index].guid, usedKey, newVaultPass).progress(function (data) {
$scope.cur_state = data;
}).then(function () {
var percent = index / _selected_credentials.length * 100;
diff --git a/js/app/services/credentialservice.js b/js/app/services/credentialservice.js
index 27eb966d..6bc86fbd 100644
--- a/js/app/services/credentialservice.js
+++ b/js/app/services/credentialservice.js
@@ -197,8 +197,17 @@
service.getCredential(credential_guid).then((function (credential) {
this.parent.plain_credential = service.decryptCredential(credential, this.parent.old_password);
var tmp = angular.copy(this.parent.plain_credential);
- this.parent.new_credential_cryptogram = service.encryptCredential(tmp, this.parent.new_password);
+ //@FIXME Your shared credentials are not updated properly
+ if (tmp.hasOwnProperty('shared_key') && tmp.shared_key !== null) {
+ var shared_key = EncryptService.decryptString(angular.copy(tmp.shared_key)).trim();
+ tmp.shared_key = EncryptService.encryptString(angular.copy(shared_key), this.parent.new_password);
+ tmp.set_share_key = true;
+ tmp.skip_revision = true;
+ this.parent.new_password = shared_key;
+ }
+
+ this.parent.new_credential_cryptogram = service.encryptCredential(tmp, this.parent.new_password);
this.call_progress(new progress_datatype(1, 2, 'credential'));
// Save data