mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-23 11:56:00 +01:00
Fix/lowdb no cache (#443)
* Add jslib prettier commit to client ignore hashes * Remove lowdb caching * Fix state service remove being set to null * Await in-memory key retrieval * Fix key loading and unlock requests. * Linter fixes * linter fixes * linter fixes
This commit is contained in:
parent
b962af303a
commit
3b1ccb409e
@ -1,2 +1,5 @@
|
|||||||
# Apply Prettier https://github.com/bitwarden/cli/pull/426
|
# Apply Prettier https://github.com/bitwarden/cli/pull/426
|
||||||
910b4a24e649f21acbf4da5b2d422b121d514bd5
|
910b4a24e649f21acbf4da5b2d422b121d514bd5
|
||||||
|
|
||||||
|
# jslib Apply Prettier https://github.com/bitwarden/jslib/pull/581
|
||||||
|
193434461dbd9c48fe5dcbad95693470aec422ac
|
||||||
|
@ -120,7 +120,7 @@ export class Main {
|
|||||||
(level) => process.env.BITWARDENCLI_DEBUG !== "true" && level <= LogLevelType.Info
|
(level) => process.env.BITWARDENCLI_DEBUG !== "true" && level <= LogLevelType.Info
|
||||||
);
|
);
|
||||||
this.cryptoFunctionService = new NodeCryptoFunctionService();
|
this.cryptoFunctionService = new NodeCryptoFunctionService();
|
||||||
this.storageService = new LowdbStorageService(this.logService, null, p, true);
|
this.storageService = new LowdbStorageService(this.logService, null, p, false);
|
||||||
this.secureStorageService = new NodeEnvSecureStorageService(
|
this.secureStorageService = new NodeEnvSecureStorageService(
|
||||||
this.storageService,
|
this.storageService,
|
||||||
this.logService,
|
this.logService,
|
||||||
|
@ -25,6 +25,8 @@ import { CliUtils } from "./utils";
|
|||||||
|
|
||||||
import { BaseProgram } from "jslib-node/cli/baseProgram";
|
import { BaseProgram } from "jslib-node/cli/baseProgram";
|
||||||
|
|
||||||
|
import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions";
|
||||||
|
|
||||||
const writeLn = CliUtils.writeLn;
|
const writeLn = CliUtils.writeLn;
|
||||||
|
|
||||||
export class Program extends BaseProgram {
|
export class Program extends BaseProgram {
|
||||||
@ -473,36 +475,34 @@ export class Program extends BaseProgram {
|
|||||||
|
|
||||||
protected async exitIfLocked() {
|
protected async exitIfLocked() {
|
||||||
await this.exitIfNotAuthed();
|
await this.exitIfNotAuthed();
|
||||||
const hasKey = await this.main.cryptoService.hasKey();
|
if (await this.main.cryptoService.hasKeyInMemory()) {
|
||||||
if (!hasKey) {
|
return;
|
||||||
const canInteract = process.env.BW_NOINTERACTION !== "true";
|
} else if (await this.main.cryptoService.hasKeyStored(KeySuffixOptions.Auto)) {
|
||||||
if (canInteract) {
|
// load key into memory
|
||||||
const usesKeyConnector = await this.main.keyConnectorService.getUsesKeyConnector();
|
|
||||||
|
|
||||||
if (usesKeyConnector) {
|
|
||||||
const response = Response.error(
|
|
||||||
"Your vault is locked. You must unlock your vault using your session key.\n" +
|
|
||||||
"If you do not have your session key, you can get a new one by logging out and logging in again."
|
|
||||||
);
|
|
||||||
this.processResponse(response, true);
|
|
||||||
} else {
|
|
||||||
const command = new UnlockCommand(
|
|
||||||
this.main.cryptoService,
|
|
||||||
this.main.stateService,
|
|
||||||
this.main.cryptoFunctionService,
|
|
||||||
this.main.apiService,
|
|
||||||
this.main.logService
|
|
||||||
);
|
|
||||||
const response = await command.run(null, null);
|
|
||||||
if (!response.success) {
|
|
||||||
this.processResponse(response, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.processResponse(Response.error("Vault is locked."), true);
|
|
||||||
}
|
|
||||||
} else if (!this.main.cryptoService.hasKeyInMemory()) {
|
|
||||||
await this.main.cryptoService.getKey();
|
await this.main.cryptoService.getKey();
|
||||||
|
} else if (process.env.BW_NOINTERACTION !== "true") {
|
||||||
|
// must unlock
|
||||||
|
if (await this.main.keyConnectorService.getUsesKeyConnector()) {
|
||||||
|
const response = Response.error(
|
||||||
|
"Your vault is locked. You must unlock your vault using your session key.\n" +
|
||||||
|
"If you do not have your session key, you can get a new one by logging out and logging in again."
|
||||||
|
);
|
||||||
|
this.processResponse(response, true);
|
||||||
|
} else {
|
||||||
|
const command = new UnlockCommand(
|
||||||
|
this.main.cryptoService,
|
||||||
|
this.main.stateService,
|
||||||
|
this.main.cryptoFunctionService,
|
||||||
|
this.main.apiService,
|
||||||
|
this.main.logService
|
||||||
|
);
|
||||||
|
const response = await command.run(null, null);
|
||||||
|
if (!response.success) {
|
||||||
|
this.processResponse(response, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.processResponse(Response.error("Vault is locked."), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,11 @@ export class NodeEnvSecureStorageService implements StorageService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async save(key: string, obj: any): Promise<any> {
|
async save(key: string, obj: any): Promise<any> {
|
||||||
if (typeof obj !== "string") {
|
if (obj == null) {
|
||||||
|
return this.remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (obj !== null && typeof obj !== "string") {
|
||||||
throw new Error("Only string storage is allowed.");
|
throw new Error("Only string storage is allowed.");
|
||||||
}
|
}
|
||||||
const protectedObj = await this.encrypt(obj);
|
const protectedObj = await this.encrypt(obj);
|
||||||
|
Loading…
Reference in New Issue
Block a user