Set proper items storage mode

This commit is contained in:
Mo Bitar
2017-11-01 18:40:43 -05:00
parent 03f7beb728
commit 5b9e5b7b91
2 changed files with 17 additions and 19 deletions

View File

@@ -45,6 +45,9 @@ angular.module('app.frontend')
storageManager.setModelStorageMode(StorageManager.Ephemeral); storageManager.setModelStorageMode(StorageManager.Ephemeral);
storageManager.setItemsMode(storageManager.hasPasscode() ? StorageManager.FixedEncrypted : StorageManager.Ephemeral); storageManager.setItemsMode(storageManager.hasPasscode() ? StorageManager.FixedEncrypted : StorageManager.Ephemeral);
} else { } else {
storageManager.setModelStorageMode(StorageManager.Fixed);
storageManager.setItemsMode(storageManager.hasPasscode() ? StorageManager.FixedEncrypted : StorageManager.Fixed);
storageManager.setItem("ephemeral", JSON.stringify(false), 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}; var params = {password: keys.pw, email: email};
httpManager.postAbsolute(requestUrl, params, function(response){ httpManager.postAbsolute(requestUrl, params, function(response){
this.setEphemeral(ephemeral); this.setEphemeral(ephemeral);
this.handleAuthResponse(response, email, url, authParams, keys); this.handleAuthResponse(response, email, url, authParams, keys);
storageManager.setModelStorageMode(ephemeral ? StorageManager.Ephemeral : StorageManager.Fixed);
this.checkForSecurityUpdate(); this.checkForSecurityUpdate();
callback(response); callback(response);
}.bind(this), function(response){ }.bind(this), function(response){
console.error("Error logging in", response); console.error("Error logging in", response);
@@ -199,11 +198,8 @@ angular.module('app.frontend')
httpManager.postAbsolute(requestUrl, params, function(response){ httpManager.postAbsolute(requestUrl, params, function(response){
this.setEphemeral(ephemeral); this.setEphemeral(ephemeral);
this.handleAuthResponse(response, email, url, authParams, keys); this.handleAuthResponse(response, email, url, authParams, keys);
storageManager.setModelStorageMode(ephemeral ? StorageManager.Ephemeral : StorageManager.Fixed);
callback(response); callback(response);
}.bind(this), function(response){ }.bind(this), function(response){
console.error("Registration error", response); console.error("Registration error", response);

View File

@@ -42,11 +42,14 @@ class StorageManager {
if(hasPasscode) { if(hasPasscode) {
// We don't want to save anything in fixed storage except for actual item data (in IndexedDB) // We don't want to save anything in fixed storage except for actual item data (in IndexedDB)
this.storage = this.memoryStorage; this.storage = this.memoryStorage;
this.itemsStorageMode = StorageManager.FixedEncrypted;
} else if(ephemeral) { } else if(ephemeral) {
// We don't want to save anything in fixed storage as well as IndexedDB // We don't want to save anything in fixed storage as well as IndexedDB
this.storage = this.memoryStorage; this.storage = this.memoryStorage;
this.itemsStorageMode = StorageManager.Ephemeral;
} else { } else {
this.storage = localStorage; this.storage = localStorage;
this.itemsStorageMode = StorageManager.Fixed;
} }
this.modelStorageMode = ephemeral ? StorageManager.Ephemeral : StorageManager.Fixed; this.modelStorageMode = ephemeral ? StorageManager.Ephemeral : StorageManager.Fixed;
@@ -69,6 +72,7 @@ class StorageManager {
newStorage.setItem(key, this.storage.getItem(key)); newStorage.setItem(key, this.storage.getItem(key));
} }
this.itemsStorageMode = mode;
this.storage.clear(); this.storage.clear();
this.storage = newStorage; this.storage = newStorage;
@@ -83,25 +87,21 @@ class StorageManager {
getVault(vaultKey) { getVault(vaultKey) {
if(vaultKey) { if(vaultKey) {
return this.storageForVault(vaultKey); if(vaultKey == StorageManager.Ephemeral || vaultKey == StorageManager.FixedEncrypted) {
return this.memoryStorage;
} else {
return localStorage;
}
} else { } else {
return this.storage; return this.storage;
} }
} }
storageForVault(vault) { setItem(key, value, vaultKey) {
if(vault == StorageManager.Ephemeral || vault == StorageManager.FixedEncrypted) { var storage = this.getVault(vaultKey);
return this.memoryStorage;
} else {
return localStorage;
}
}
setItem(key, value, vault) {
var storage = this.getVault(vault);
storage.setItem(key, value); storage.setItem(key, value);
if(vault === StorageManager.FixedEncrypted) { if(vaultKey === StorageManager.FixedEncrypted || (!vaultKey && this.itemsStorageMode === StorageManager.FixedEncrypted)) {
this.writeEncryptedStorageToDisk(); this.writeEncryptedStorageToDisk();
} }
} }
@@ -147,6 +147,7 @@ class StorageManager {
var encryptedStorage = new EncryptedStorage(); var encryptedStorage = new EncryptedStorage();
// Copy over totality of current storage // Copy over totality of current storage
encryptedStorage.storage = this.storageAsHash(); encryptedStorage.storage = this.storageAsHash();
// Save new encrypted storage in Fixed storage // Save new encrypted storage in Fixed storage
var params = new ItemParams(encryptedStorage, this.encryptedStorageKeys); var params = new ItemParams(encryptedStorage, this.encryptedStorageKeys);
this.setItem("encryptedStorage", JSON.stringify(params.paramsForSync()), StorageManager.Fixed); this.setItem("encryptedStorage", JSON.stringify(params.paramsForSync()), StorageManager.Fixed);
@@ -160,6 +161,7 @@ class StorageManager {
for(var key of Object.keys(encryptedStorage.storage)) { for(var key of Object.keys(encryptedStorage.storage)) {
this.setItem(key, encryptedStorage.storage[key]); this.setItem(key, encryptedStorage.storage[key]);
} }
} }
hasPasscode() { hasPasscode() {