mirror of
https://github.com/bitwarden/browser
synced 2025-12-14 07:13:32 +00:00
* Require userId for setting masterKeyEncryptedUserKey * Replace folders for specified user * Require userId for collection replace * Cipher Replace requires userId * Require UserId to update equivalent domains * Require userId for policy replace * sync state updates between fake state for better testing * Revert to public observable tests Since they now sync, we can test single-user updates impacting active user observables * Do not init fake states through sync Do not sync initial null values, that might wipe out already existing data. * Require userId for Send replace * Include userId for organization replace * Require userId for billing sync data * Require user Id for key connector sync data * Allow decode of token by userId * Require userId for synced key connector updates * Add userId to policy setting during organization invite accept * Fix cli * Handle null userId --------- Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
import { Observable } from "rxjs";
|
|
|
|
import { UserKeyRotationDataProvider } from "@bitwarden/auth/common";
|
|
|
|
import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key";
|
|
import { UserId } from "../../../types/guid";
|
|
import { UserKey } from "../../../types/key";
|
|
import { FolderData } from "../../models/data/folder.data";
|
|
import { Folder } from "../../models/domain/folder";
|
|
import { FolderWithIdRequest } from "../../models/request/folder-with-id.request";
|
|
import { FolderView } from "../../models/view/folder.view";
|
|
|
|
export abstract class FolderService implements UserKeyRotationDataProvider<FolderWithIdRequest> {
|
|
folders$: Observable<Folder[]>;
|
|
folderViews$: Observable<FolderView[]>;
|
|
|
|
clearCache: () => Promise<void>;
|
|
encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise<Folder>;
|
|
get: (id: string) => Promise<Folder>;
|
|
getDecrypted$: (id: string) => Observable<FolderView | undefined>;
|
|
getAllFromState: () => Promise<Folder[]>;
|
|
/**
|
|
* @deprecated Only use in CLI!
|
|
*/
|
|
getFromState: (id: string) => Promise<Folder>;
|
|
/**
|
|
* @deprecated Only use in CLI!
|
|
*/
|
|
getAllDecryptedFromState: () => Promise<FolderView[]>;
|
|
decryptFolders: (folders: Folder[]) => Promise<FolderView[]>;
|
|
/**
|
|
* Returns user folders re-encrypted with the new user key.
|
|
* @param originalUserKey the original user key
|
|
* @param newUserKey the new user key
|
|
* @param userId the user id
|
|
* @throws Error if new user key is null
|
|
* @returns a list of user folders that have been re-encrypted with the new user key
|
|
*/
|
|
getRotatedData: (
|
|
originalUserKey: UserKey,
|
|
newUserKey: UserKey,
|
|
userId: UserId,
|
|
) => Promise<FolderWithIdRequest[]>;
|
|
}
|
|
|
|
export abstract class InternalFolderService extends FolderService {
|
|
upsert: (folder: FolderData | FolderData[]) => Promise<void>;
|
|
replace: (folders: { [id: string]: FolderData }, userId: UserId) => Promise<void>;
|
|
clear: (userId?: string) => Promise<void>;
|
|
delete: (id: string | string[]) => Promise<any>;
|
|
}
|