[PS-612] Update jslib (#531)

* Update Export model imports

* Update for authService.getAuthStatus refactor

* Update jslib
This commit is contained in:
Thomas Rittson 2022-05-16 11:58:36 +10:00 committed by GitHub
parent c4d586509a
commit f6c454c970
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 86 additions and 76 deletions

2
jslib

@ -1 +1 @@
Subproject commit 6bcadc4f408db2c150753f53a07d6f8888b6e9ff
Subproject commit 1370006f6ea310cf85a12bcbd8213f74f9552c4d

View File

@ -231,6 +231,26 @@ export class Main {
this.cryptoFunctionService
);
this.twoFactorService = new TwoFactorService(this.i18nService, this.platformUtilsService);
this.authService = new AuthService(
this.cryptoService,
this.apiService,
this.tokenService,
this.appIdService,
this.platformUtilsService,
this.messagingService,
this.logService,
this.keyConnectorService,
this.environmentService,
this.stateService,
this.twoFactorService,
this.i18nService
);
const lockedCallback = async () =>
await this.cryptoService.clearStoredKey(KeySuffixOptions.Auto);
this.vaultTimeoutService = new VaultTimeoutService(
this.cipherService,
this.folderService,
@ -243,7 +263,8 @@ export class Main {
this.policyService,
this.keyConnectorService,
this.stateService,
async () => await this.cryptoService.clearStoredKey(KeySuffixOptions.Auto),
this.authService,
lockedCallback,
null
);
@ -294,23 +315,6 @@ export class Main {
this.cryptoFunctionService
);
this.twoFactorService = new TwoFactorService(this.i18nService, this.platformUtilsService);
this.authService = new AuthService(
this.cryptoService,
this.apiService,
this.tokenService,
this.appIdService,
this.platformUtilsService,
this.messagingService,
this.logService,
this.keyConnectorService,
this.environmentService,
this.stateService,
this.twoFactorService,
this.i18nService
);
this.auditService = new AuditService(this.cryptoFunctionService, this.apiService);
this.program = new Program(this);
this.vaultProgram = new VaultProgram(this);

View File

@ -7,9 +7,9 @@ import { CryptoService } from "jslib-common/abstractions/crypto.service";
import { FolderService } from "jslib-common/abstractions/folder.service";
import { StateService } from "jslib-common/abstractions/state.service";
import { Utils } from "jslib-common/misc/utils";
import { Cipher } from "jslib-common/models/export/cipher";
import { Collection } from "jslib-common/models/export/collection";
import { Folder } from "jslib-common/models/export/folder";
import { CipherExport } from "jslib-common/models/export/cipherExport";
import { CollectionExport } from "jslib-common/models/export/collectionExport";
import { FolderExport } from "jslib-common/models/export/folderExport";
import { CollectionRequest } from "jslib-common/models/request/collectionRequest";
import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest";
import { Response } from "jslib-node/cli/models/response";
@ -72,8 +72,8 @@ export class CreateCommand {
}
}
private async createCipher(req: Cipher) {
const cipher = await this.cipherService.encrypt(Cipher.toView(req));
private async createCipher(req: CipherExport) {
const cipher = await this.cipherService.encrypt(CipherExport.toView(req));
try {
await this.cipherService.saveWithServer(cipher);
const newCipher = await this.cipherService.get(cipher.id);
@ -145,8 +145,8 @@ export class CreateCommand {
}
}
private async createFolder(req: Folder) {
const folder = await this.folderService.encrypt(Folder.toView(req));
private async createFolder(req: FolderExport) {
const folder = await this.folderService.encrypt(FolderExport.toView(req));
try {
await this.folderService.saveWithServer(folder);
const newFolder = await this.folderService.get(folder.id);
@ -183,7 +183,7 @@ export class CreateCommand {
request.externalId = req.externalId;
request.groups = groups;
const response = await this.apiService.postCollection(req.organizationId, request);
const view = Collection.toView(req);
const view = CollectionExport.toView(req);
view.id = response.id;
const res = new OrganizationCollectionResponse(view, groups);
return Response.success(res);

View File

@ -3,9 +3,9 @@ import { CipherService } from "jslib-common/abstractions/cipher.service";
import { CryptoService } from "jslib-common/abstractions/crypto.service";
import { FolderService } from "jslib-common/abstractions/folder.service";
import { Utils } from "jslib-common/misc/utils";
import { Cipher } from "jslib-common/models/export/cipher";
import { Collection } from "jslib-common/models/export/collection";
import { Folder } from "jslib-common/models/export/folder";
import { CipherExport } from "jslib-common/models/export/cipherExport";
import { CollectionExport } from "jslib-common/models/export/collectionExport";
import { FolderExport } from "jslib-common/models/export/folderExport";
import { CollectionRequest } from "jslib-common/models/request/collectionRequest";
import { SelectionReadOnlyRequest } from "jslib-common/models/request/selectionReadOnlyRequest";
import { Response } from "jslib-node/cli/models/response";
@ -69,7 +69,7 @@ export class EditCommand {
}
}
private async editCipher(id: string, req: Cipher) {
private async editCipher(id: string, req: CipherExport) {
const cipher = await this.cipherService.get(id);
if (cipher == null) {
return Response.notFound();
@ -79,7 +79,7 @@ export class EditCommand {
if (cipherView.isDeleted) {
return Response.badRequest("You may not edit a deleted item. Use the restore command first.");
}
cipherView = Cipher.toView(req, cipherView);
cipherView = CipherExport.toView(req, cipherView);
const encCipher = await this.cipherService.encrypt(cipherView);
try {
await this.cipherService.saveWithServer(encCipher);
@ -115,14 +115,14 @@ export class EditCommand {
}
}
private async editFolder(id: string, req: Folder) {
private async editFolder(id: string, req: FolderExport) {
const folder = await this.folderService.get(id);
if (folder == null) {
return Response.notFound();
}
let folderView = await folder.decrypt();
folderView = Folder.toView(req, folderView);
folderView = FolderExport.toView(req, folderView);
const encFolder = await this.folderService.encrypt(folderView);
try {
await this.folderService.saveWithServer(encFolder);
@ -167,7 +167,7 @@ export class EditCommand {
request.externalId = req.externalId;
request.groups = groups;
const response = await this.apiService.putCollection(req.organizationId, id, request);
const view = Collection.toView(req);
const view = CollectionExport.toView(req);
view.id = response.id;
const res = new OrganizationCollectionResponse(view, groups);
return Response.success(res);

View File

@ -13,15 +13,15 @@ import { SendType } from "jslib-common/enums/sendType";
import { Utils } from "jslib-common/misc/utils";
import { EncString } from "jslib-common/models/domain/encString";
import { Organization } from "jslib-common/models/domain/organization";
import { Card } from "jslib-common/models/export/card";
import { Cipher } from "jslib-common/models/export/cipher";
import { Collection } from "jslib-common/models/export/collection";
import { Field } from "jslib-common/models/export/field";
import { Folder } from "jslib-common/models/export/folder";
import { Identity } from "jslib-common/models/export/identity";
import { Login } from "jslib-common/models/export/login";
import { LoginUri } from "jslib-common/models/export/loginUri";
import { SecureNote } from "jslib-common/models/export/secureNote";
import { CardExport } from "jslib-common/models/export/cardExport";
import { CipherExport } from "jslib-common/models/export/cipherExport";
import { CollectionExport } from "jslib-common/models/export/collectionExport";
import { FieldExport } from "jslib-common/models/export/fieldExport";
import { FolderExport } from "jslib-common/models/export/folderExport";
import { IdentityExport } from "jslib-common/models/export/identityExport";
import { LoginExport } from "jslib-common/models/export/loginExport";
import { LoginUriExport } from "jslib-common/models/export/loginUriExport";
import { SecureNoteExport } from "jslib-common/models/export/secureNoteExport";
import { ErrorResponse } from "jslib-common/models/response/errorResponse";
import { CipherView } from "jslib-common/models/view/cipherView";
import { CollectionView } from "jslib-common/models/view/collectionView";
@ -459,31 +459,31 @@ export class GetCommand extends DownloadCommand {
let template: any = null;
switch (id.toLowerCase()) {
case "item":
template = Cipher.template();
template = CipherExport.template();
break;
case "item.field":
template = Field.template();
template = FieldExport.template();
break;
case "item.login":
template = Login.template();
template = LoginExport.template();
break;
case "item.login.uri":
template = LoginUri.template();
template = LoginUriExport.template();
break;
case "item.card":
template = Card.template();
template = CardExport.template();
break;
case "item.identity":
template = Identity.template();
template = IdentityExport.template();
break;
case "item.securenote":
template = SecureNote.template();
template = SecureNoteExport.template();
break;
case "folder":
template = Folder.template();
template = FolderExport.template();
break;
case "collection":
template = Collection.template();
template = CollectionExport.template();
break;
case "item-collections":
template = ["collection-id1", "collection-id2"];

View File

@ -96,7 +96,7 @@ export class ServeCommand {
this.main.environmentService,
this.main.syncService,
this.main.stateService,
this.main.vaultTimeoutService
this.main.authService
);
this.deleteCommand = new DeleteCommand(
this.main.cipherService,

View File

@ -1,7 +1,8 @@
import { AuthService } from "jslib-common/abstractions/auth.service";
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
import { StateService } from "jslib-common/abstractions/state.service";
import { SyncService } from "jslib-common/abstractions/sync.service";
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus";
import { Response } from "jslib-node/cli/models/response";
import { TemplateResponse } from "../models/response/templateResponse";
@ -11,7 +12,7 @@ export class StatusCommand {
private envService: EnvironmentService,
private syncService: SyncService,
private stateService: StateService,
private vaultTimeoutService: VaultTimeoutService
private authService: AuthService
) {}
async run(): Promise<Response> {
@ -40,13 +41,14 @@ export class StatusCommand {
return this.envService.getUrls().base;
}
private async status(): Promise<string> {
const authed = await this.stateService.getIsAuthenticated();
if (!authed) {
private async status(): Promise<"unauthenticated" | "locked" | "unlocked"> {
const authStatus = await this.authService.getAuthStatus();
if (authStatus === AuthenticationStatus.Unlocked) {
return "unlocked";
} else if (authStatus === AuthenticationStatus.Locked) {
return "locked";
} else {
return "unauthenticated";
}
const isLocked = await this.vaultTimeoutService.isLocked();
return isLocked ? "locked" : "unlocked";
}
}

View File

@ -1,8 +1,8 @@
import { Collection } from "jslib-common/models/export/collection";
import { CollectionExport } from "jslib-common/models/export/collectionExport";
import { SelectionReadOnly } from "../selectionReadOnly";
export class OrganizationCollectionRequest extends Collection {
export class OrganizationCollectionRequest extends CollectionExport {
static template(): OrganizationCollectionRequest {
const req = new OrganizationCollectionRequest();
req.organizationId = "00000000-0000-0000-0000-000000000000";

View File

@ -1,5 +1,5 @@
import { CipherType } from "jslib-common/enums/cipherType";
import { CipherWithIds } from "jslib-common/models/export/cipherWithIds";
import { CipherWithIdExport } from "jslib-common/models/export/cipherWithIdsExport";
import { CipherView } from "jslib-common/models/view/cipherView";
import { BaseResponse } from "jslib-node/cli/models/response/baseResponse";
@ -7,7 +7,7 @@ import { AttachmentResponse } from "./attachmentResponse";
import { LoginResponse } from "./loginResponse";
import { PasswordHistoryResponse } from "./passwordHistoryResponse";
export class CipherResponse extends CipherWithIds implements BaseResponse {
export class CipherResponse extends CipherWithIdExport implements BaseResponse {
object: string;
attachments: AttachmentResponse[];
revisionDate: Date;

View File

@ -1,8 +1,8 @@
import { CollectionWithId } from "jslib-common/models/export/collectionWithId";
import { CollectionWithIdExport } from "jslib-common/models/export/collectionWithIdExport";
import { CollectionView } from "jslib-common/models/view/collectionView";
import { BaseResponse } from "jslib-node/cli/models/response/baseResponse";
export class CollectionResponse extends CollectionWithId implements BaseResponse {
export class CollectionResponse extends CollectionWithIdExport implements BaseResponse {
object: string;
constructor(o: CollectionView) {

View File

@ -1,8 +1,8 @@
import { FolderWithId } from "jslib-common/models/export/folderWithId";
import { FolderWithIdExport } from "jslib-common/models/export/folderWithIdExport";
import { FolderView } from "jslib-common/models/view/folderView";
import { BaseResponse } from "jslib-node/cli/models/response/baseResponse";
export class FolderResponse extends FolderWithId implements BaseResponse {
export class FolderResponse extends FolderWithIdExport implements BaseResponse {
object: string;
constructor(o: FolderView) {

View File

@ -1,7 +1,7 @@
import { Login } from "jslib-common/models/export/login";
import { LoginExport } from "jslib-common/models/export/loginExport";
import { LoginView } from "jslib-common/models/view/loginView";
export class LoginResponse extends Login {
export class LoginResponse extends LoginExport {
passwordRevisionDate: Date;
constructor(o: LoginView) {

View File

@ -1,6 +1,7 @@
import * as chalk from "chalk";
import * as program from "commander";
import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus";
import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions";
import { BaseProgram } from "jslib-node/cli/baseProgram";
import { LogoutCommand } from "jslib-node/cli/commands/logout.command";
@ -232,12 +233,15 @@ export class Program extends BaseProgram {
writeLn("", true);
})
.option("--check", "Check lock status.", async () => {
const locked = await this.main.vaultTimeoutService.isLocked();
if (!locked) {
await this.exitIfNotAuthed();
const authStatus = await this.main.authService.getAuthStatus();
if (authStatus === AuthenticationStatus.Unlocked) {
const res = new MessageResponse("Vault is unlocked!", null);
this.processResponse(Response.success(res), true);
} else {
this.processResponse(Response.error("Vault is locked."), true);
}
this.processResponse(Response.error("Vault is locked."), true);
})
.option("--passwordenv <passwordenv>", "Environment variable storing your password")
.option(
@ -460,7 +464,7 @@ export class Program extends BaseProgram {
this.main.environmentService,
this.main.syncService,
this.main.stateService,
this.main.vaultTimeoutService
this.main.authService
);
const response = await command.run();
this.processResponse(response);