diff options
author | brantje <brantje@gmail.com> | 2017-02-05 18:12:37 +0300 |
---|---|---|
committer | brantje <brantje@gmail.com> | 2017-02-05 19:25:20 +0300 |
commit | 0af5e1f6210ac5f44ae875d0e62b85f87a44f5c4 (patch) | |
tree | 60a9a64bf9f3bb9bc0e788dbda3da783cdb3d87f /js | |
parent | 45d7a10fcefb1421fab8a49933b9868c951ba4b8 (diff) |
Fix shared credentials not updated
Diffstat (limited to 'js')
-rw-r--r-- | js/app/controllers/settings.js | 39 | ||||
-rw-r--r-- | js/app/services/credentialservice.js | 11 |
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 |