mirror of
https://github.com/bitwarden/browser
synced 2025-12-16 16:23:44 +00:00
update key api changes
This commit is contained in:
@@ -35,6 +35,7 @@ import { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';
|
|||||||
import { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';
|
import { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';
|
||||||
import { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';
|
import { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';
|
||||||
import { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';
|
import { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';
|
||||||
|
import { UpdateKeyRequest } from '../models/request/updateKeyRequest';
|
||||||
import { UpdateProfileRequest } from '../models/request/updateProfileRequest';
|
import { UpdateProfileRequest } from '../models/request/updateProfileRequest';
|
||||||
import { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';
|
import { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';
|
||||||
import { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';
|
import { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';
|
||||||
@@ -106,6 +107,7 @@ export abstract class ApiService {
|
|||||||
postAccountStorage: (request: StorageRequest) => Promise<any>;
|
postAccountStorage: (request: StorageRequest) => Promise<any>;
|
||||||
postAccountPayment: (request: PaymentRequest) => Promise<any>;
|
postAccountPayment: (request: PaymentRequest) => Promise<any>;
|
||||||
postAccountLicense: (data: FormData) => Promise<any>;
|
postAccountLicense: (data: FormData) => Promise<any>;
|
||||||
|
postAccountKey: (request: UpdateKeyRequest) => Promise<any>;
|
||||||
postAccountKeys: (request: KeysRequest) => Promise<any>;
|
postAccountKeys: (request: KeysRequest) => Promise<any>;
|
||||||
postAccountVerifyEmail: () => Promise<any>;
|
postAccountVerifyEmail: () => Promise<any>;
|
||||||
postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise<any>;
|
postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise<any>;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export abstract class CipherService {
|
|||||||
decryptedCipherCache: CipherView[];
|
decryptedCipherCache: CipherView[];
|
||||||
|
|
||||||
clearCache: () => void;
|
clearCache: () => void;
|
||||||
encrypt: (model: CipherView) => Promise<Cipher>;
|
encrypt: (model: CipherView, key?: SymmetricCryptoKey) => Promise<Cipher>;
|
||||||
encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise<Field[]>;
|
encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise<Field[]>;
|
||||||
encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise<Field>;
|
encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise<Field>;
|
||||||
get: (id: string) => Promise<Cipher>;
|
get: (id: string) => Promise<Cipher>;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { FolderData } from '../models/data/folderData';
|
import { FolderData } from '../models/data/folderData';
|
||||||
|
|
||||||
import { Folder } from '../models/domain/folder';
|
import { Folder } from '../models/domain/folder';
|
||||||
|
import { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';
|
||||||
|
|
||||||
import { FolderView } from '../models/view/folderView';
|
import { FolderView } from '../models/view/folderView';
|
||||||
|
|
||||||
@@ -8,7 +9,7 @@ export abstract class FolderService {
|
|||||||
decryptedFolderCache: FolderView[];
|
decryptedFolderCache: FolderView[];
|
||||||
|
|
||||||
clearCache: () => void;
|
clearCache: () => void;
|
||||||
encrypt: (model: FolderView) => Promise<Folder>;
|
encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise<Folder>;
|
||||||
get: (id: string) => Promise<Folder>;
|
get: (id: string) => Promise<Folder>;
|
||||||
getAll: () => Promise<Folder[]>;
|
getAll: () => Promise<Folder[]>;
|
||||||
getAllDecrypted: () => Promise<FolderView[]>;
|
getAllDecrypted: () => Promise<FolderView[]>;
|
||||||
|
|||||||
12
src/models/request/folderWithIdRequest.ts
Normal file
12
src/models/request/folderWithIdRequest.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { FolderRequest } from './folderRequest';
|
||||||
|
|
||||||
|
import { Folder } from '../domain/folder';
|
||||||
|
|
||||||
|
export class FolderWithIdRequest extends FolderRequest {
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
constructor(folder: Folder) {
|
||||||
|
super(folder);
|
||||||
|
this.id = folder.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
10
src/models/request/updateKeyRequest.ts
Normal file
10
src/models/request/updateKeyRequest.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { CipherWithIdRequest } from './cipherWithIdRequest';
|
||||||
|
import { FolderWithIdRequest } from './folderWithIdRequest';
|
||||||
|
|
||||||
|
export class UpdateKeyRequest {
|
||||||
|
ciphers: CipherWithIdRequest[] = [];
|
||||||
|
folders: FolderWithIdRequest[] = [];
|
||||||
|
masterPasswordHash: string;
|
||||||
|
privateKey: string;
|
||||||
|
key: string;
|
||||||
|
}
|
||||||
@@ -41,6 +41,7 @@ import { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';
|
|||||||
import { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';
|
import { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';
|
||||||
import { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';
|
import { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';
|
||||||
import { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';
|
import { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';
|
||||||
|
import { UpdateKeyRequest } from '../models/request/updateKeyRequest';
|
||||||
import { UpdateProfileRequest } from '../models/request/updateProfileRequest';
|
import { UpdateProfileRequest } from '../models/request/updateProfileRequest';
|
||||||
import { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';
|
import { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';
|
||||||
import { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';
|
import { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';
|
||||||
@@ -256,6 +257,10 @@ export class ApiService implements ApiServiceAbstraction {
|
|||||||
return this.send('POST', '/accounts/keys', request, true, false);
|
return this.send('POST', '/accounts/keys', request, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
postAccountKey(request: UpdateKeyRequest): Promise<any> {
|
||||||
|
return this.send('POST', '/accounts/key', request, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
postAccountVerifyEmail(): Promise<any> {
|
postAccountVerifyEmail(): Promise<any> {
|
||||||
return this.send('POST', '/accounts/verify-email', null, true, false);
|
return this.send('POST', '/accounts/verify-email', null, true, false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ export class CipherService implements CipherServiceAbstraction {
|
|||||||
this.decryptedCipherCache = null;
|
this.decryptedCipherCache = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async encrypt(model: CipherView): Promise<Cipher> {
|
async encrypt(model: CipherView, key?: SymmetricCryptoKey): Promise<Cipher> {
|
||||||
const cipher = new Cipher();
|
const cipher = new Cipher();
|
||||||
cipher.id = model.id;
|
cipher.id = model.id;
|
||||||
cipher.folderId = model.folderId;
|
cipher.folderId = model.folderId;
|
||||||
@@ -69,7 +69,9 @@ export class CipherService implements CipherServiceAbstraction {
|
|||||||
cipher.type = model.type;
|
cipher.type = model.type;
|
||||||
cipher.collectionIds = model.collectionIds;
|
cipher.collectionIds = model.collectionIds;
|
||||||
|
|
||||||
const key = await this.cryptoService.getOrgKey(cipher.organizationId);
|
if (key == null && cipher.organizationId != null) {
|
||||||
|
key = await this.cryptoService.getOrgKey(cipher.organizationId);
|
||||||
|
}
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
this.encryptObjProperty(model, cipher, {
|
this.encryptObjProperty(model, cipher, {
|
||||||
name: null,
|
name: null,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { FolderData } from '../models/data/folderData';
|
import { FolderData } from '../models/data/folderData';
|
||||||
|
|
||||||
import { Folder } from '../models/domain/folder';
|
import { Folder } from '../models/domain/folder';
|
||||||
|
import { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';
|
||||||
|
|
||||||
import { FolderRequest } from '../models/request/folderRequest';
|
import { FolderRequest } from '../models/request/folderRequest';
|
||||||
|
|
||||||
@@ -35,10 +36,10 @@ export class FolderService implements FolderServiceAbstraction {
|
|||||||
this.decryptedFolderCache = null;
|
this.decryptedFolderCache = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async encrypt(model: FolderView): Promise<Folder> {
|
async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise<Folder> {
|
||||||
const folder = new Folder();
|
const folder = new Folder();
|
||||||
folder.id = model.id;
|
folder.id = model.id;
|
||||||
folder.name = await this.cryptoService.encrypt(model.name);
|
folder.name = await this.cryptoService.encrypt(model.name, key);
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user