1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-08 04:33:38 +00:00

Add sdk hookup

This commit is contained in:
adudek-bw
2025-05-06 13:30:44 -04:00
parent 360de4640c
commit 0e3d7fb77b
4 changed files with 18 additions and 10 deletions

View File

@@ -2,7 +2,6 @@ import { PolicyType } from "@bitwarden/common/admin-console/enums";
import { GENERATOR_DISK } from "@bitwarden/common/platform/state";
import { PublicClassifier } from "@bitwarden/common/tools/public-classifier";
import { ObjectKey } from "@bitwarden/common/tools/state/object-key";
import { BitwardenClient } from "@bitwarden/sdk-internal";
import { SdkPasswordRandomizer } from "../../engine";
import { passphraseLeastPrivilege, PassphrasePolicyConstraints } from "../../policies";
@@ -31,7 +30,7 @@ const sdkPassphrase: GeneratorMetadata<PassphraseGenerationOptions> = {
create(
dependencies: GeneratorDependencyProvider,
): CredentialGenerator<PassphraseGenerationOptions> {
return new SdkPasswordRandomizer(new BitwardenClient()); // @TODO hook up a real SDK client
return new SdkPasswordRandomizer(dependencies.sdk);
},
},
profiles: {

View File

@@ -2,7 +2,6 @@ import { PolicyType } from "@bitwarden/common/admin-console/enums";
import { GENERATOR_DISK } from "@bitwarden/common/platform/state";
import { PublicClassifier } from "@bitwarden/common/tools/public-classifier";
import { deepFreeze } from "@bitwarden/common/tools/util";
import { BitwardenClient } from "@bitwarden/sdk-internal";
import { SdkPasswordRandomizer } from "../../engine";
import { DynamicPasswordPolicyConstraints, passwordLeastPrivilege } from "../../policies";
@@ -31,7 +30,7 @@ const sdkPassword: GeneratorMetadata<PasswordGeneratorSettings> = deepFreeze({
create(
dependencies: GeneratorDependencyProvider,
): CredentialGenerator<PasswordGeneratorSettings> {
return new SdkPasswordRandomizer(new BitwardenClient()); // @TODO hook up a real SDK client
return new SdkPasswordRandomizer(dependencies.sdk);
},
},
profiles: {

View File

@@ -1,6 +1,6 @@
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service";
import { RestClient } from "@bitwarden/common/tools/integration/rpc";
import { BitwardenClient } from "@bitwarden/sdk-internal";
import { Randomizer } from "../abstractions";
@@ -10,5 +10,5 @@ export type GeneratorDependencyProvider = {
// FIXME: introduce `I18nKeyOrLiteral` into forwarder
// structures and remove this dependency
i18nService: I18nService;
sdkService: SdkService;
sdk: BitwardenClient;
};

View File

@@ -16,12 +16,14 @@ import {
} from "rxjs";
import { Account } from "@bitwarden/common/auth/abstractions/account.service";
import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service";
import { BoundDependency, OnDependency } from "@bitwarden/common/tools/dependencies";
import { VendorId } from "@bitwarden/common/tools/extension";
import { SemanticLogger } from "@bitwarden/common/tools/log";
import { SystemServiceProvider } from "@bitwarden/common/tools/providers";
import { anyComplete, memoizedMap } from "@bitwarden/common/tools/rx";
import { anyComplete, memoizedMap, withLatestReady } from "@bitwarden/common/tools/rx";
import { UserStateSubject } from "@bitwarden/common/tools/state/user-state-subject";
import { BitwardenClient } from "@bitwarden/sdk-internal";
import { CredentialGeneratorService } from "../abstractions";
import {
@@ -33,7 +35,7 @@ import {
toVendorId,
CredentialType,
} from "../metadata";
import { CredentialGeneratorProviders } from "../providers";
import { CredentialGeneratorProviders, GeneratorDependencyProvider } from "../providers";
import { GenerateRequest } from "../types";
import { isAlgorithmRequest, isTypeRequest } from "../types/metadata-request";
@@ -48,6 +50,7 @@ export class DefaultCredentialGeneratorService implements CredentialGeneratorSer
constructor(
private readonly provide: CredentialGeneratorProviders,
private readonly system: SystemServiceProvider,
private readonly sdkService: SdkService,
) {
this.log = system.log({ type: "CredentialGeneratorService" });
}
@@ -108,9 +111,10 @@ export class DefaultCredentialGeneratorService implements CredentialGeneratorSer
// load the algorithm's engine
const engine$ = metadata$.pipe(
withLatestReady(this.sdkService.client$),
memoizedMap(
(metadata) => {
const engine = metadata.engine.create(this.provide.generator);
([metadata, sdk]) => {
const engine = metadata.engine.create(this.getGeneratorDependencies(sdk));
this.log.debug({ algorithm: metadata.id }, "engine cached");
return engine;
@@ -213,4 +217,10 @@ export class DefaultCredentialGeneratorService implements CredentialGeneratorSer
return this.provide.profile.constraints$(activeProfile, dependencies);
}
getGeneratorDependencies(sdk: BitwardenClient): GeneratorDependencyProvider {
const provider = this.provide.generator;
provider.sdk = sdk;
return provider;
}
}