From 5b9e5b7b919d1e892aa13a1c11f3f95bcaa8ea22 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Wed, 1 Nov 2017 18:40:43 -0500 Subject: [PATCH] Set proper items storage mode --- .../javascripts/app/services/authManager.js | 10 +++---- .../app/services/storageManager.js | 26 ++++++++++--------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/app/assets/javascripts/app/services/authManager.js b/app/assets/javascripts/app/services/authManager.js index 6e07e67b2..9763e716e 100644 --- a/app/assets/javascripts/app/services/authManager.js +++ b/app/assets/javascripts/app/services/authManager.js @@ -45,6 +45,9 @@ angular.module('app.frontend') storageManager.setModelStorageMode(StorageManager.Ephemeral); storageManager.setItemsMode(storageManager.hasPasscode() ? StorageManager.FixedEncrypted : StorageManager.Ephemeral); } else { + storageManager.setModelStorageMode(StorageManager.Fixed); + storageManager.setItemsMode(storageManager.hasPasscode() ? StorageManager.FixedEncrypted : StorageManager.Fixed); + storageManager.setItem("ephemeral", JSON.stringify(false), StorageManager.Fixed); } } @@ -150,12 +153,8 @@ angular.module('app.frontend') var params = {password: keys.pw, email: email}; httpManager.postAbsolute(requestUrl, params, function(response){ this.setEphemeral(ephemeral); - this.handleAuthResponse(response, email, url, authParams, keys); - storageManager.setModelStorageMode(ephemeral ? StorageManager.Ephemeral : StorageManager.Fixed); - this.checkForSecurityUpdate(); - callback(response); }.bind(this), function(response){ console.error("Error logging in", response); @@ -199,11 +198,8 @@ angular.module('app.frontend') httpManager.postAbsolute(requestUrl, params, function(response){ this.setEphemeral(ephemeral); - this.handleAuthResponse(response, email, url, authParams, keys); - storageManager.setModelStorageMode(ephemeral ? StorageManager.Ephemeral : StorageManager.Fixed); - callback(response); }.bind(this), function(response){ console.error("Registration error", response); diff --git a/app/assets/javascripts/app/services/storageManager.js b/app/assets/javascripts/app/services/storageManager.js index 5c34e4e15..cc8a3fa9b 100644 --- a/app/assets/javascripts/app/services/storageManager.js +++ b/app/assets/javascripts/app/services/storageManager.js @@ -42,11 +42,14 @@ class StorageManager { if(hasPasscode) { // We don't want to save anything in fixed storage except for actual item data (in IndexedDB) this.storage = this.memoryStorage; + this.itemsStorageMode = StorageManager.FixedEncrypted; } else if(ephemeral) { // We don't want to save anything in fixed storage as well as IndexedDB this.storage = this.memoryStorage; + this.itemsStorageMode = StorageManager.Ephemeral; } else { this.storage = localStorage; + this.itemsStorageMode = StorageManager.Fixed; } this.modelStorageMode = ephemeral ? StorageManager.Ephemeral : StorageManager.Fixed; @@ -69,6 +72,7 @@ class StorageManager { newStorage.setItem(key, this.storage.getItem(key)); } + this.itemsStorageMode = mode; this.storage.clear(); this.storage = newStorage; @@ -83,25 +87,21 @@ class StorageManager { getVault(vaultKey) { if(vaultKey) { - return this.storageForVault(vaultKey); + if(vaultKey == StorageManager.Ephemeral || vaultKey == StorageManager.FixedEncrypted) { + return this.memoryStorage; + } else { + return localStorage; + } } else { return this.storage; } } - storageForVault(vault) { - if(vault == StorageManager.Ephemeral || vault == StorageManager.FixedEncrypted) { - return this.memoryStorage; - } else { - return localStorage; - } - } - - setItem(key, value, vault) { - var storage = this.getVault(vault); + setItem(key, value, vaultKey) { + var storage = this.getVault(vaultKey); storage.setItem(key, value); - if(vault === StorageManager.FixedEncrypted) { + if(vaultKey === StorageManager.FixedEncrypted || (!vaultKey && this.itemsStorageMode === StorageManager.FixedEncrypted)) { this.writeEncryptedStorageToDisk(); } } @@ -147,6 +147,7 @@ class StorageManager { var encryptedStorage = new EncryptedStorage(); // Copy over totality of current storage encryptedStorage.storage = this.storageAsHash(); + // Save new encrypted storage in Fixed storage var params = new ItemParams(encryptedStorage, this.encryptedStorageKeys); this.setItem("encryptedStorage", JSON.stringify(params.paramsForSync()), StorageManager.Fixed); @@ -160,6 +161,7 @@ class StorageManager { for(var key of Object.keys(encryptedStorage.storage)) { this.setItem(key, encryptedStorage.storage[key]); } + } hasPasscode() {