1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-28 14:13:22 +00:00

[PM-27225] Fix nothing showing when biometrics unavailable (#17209)

* Fix nothing showing when biometrics unavailable

* Cleanup

* Switch to tooltip

* Fix type error

* Fix type check

* Fix includes

* Fix types

* Fix tests

* Add missing return

* Add DesktopDisconnected to canUseBiometrics

* Apply suggestions

* Move comment

* Cleanup

* Fix typing for null value

* Add tests

* Fix QA bugs
This commit is contained in:
Bernd Schoolmann
2025-12-11 12:47:00 +01:00
committed by GitHub
parent 267e488390
commit 404e07b6bd
6 changed files with 305 additions and 6 deletions

View File

@@ -48,7 +48,11 @@ export class ForegroundBrowserBiometricsService extends BiometricsService {
result: BiometricsStatus;
error: string;
}>(BiometricsCommands.GetBiometricsStatusForUser, { userId: id });
return response.result;
if (response != null) {
return response.result;
} else {
return BiometricsStatus.DesktopDisconnected;
}
}
async getShouldAutopromptNow(): Promise<boolean> {

View File

@@ -51,6 +51,7 @@ import {
} from "@bitwarden/common/auth/abstractions/auth.service";
import { MasterPasswordApiService } from "@bitwarden/common/auth/abstractions/master-password-api.service.abstraction";
import { SsoLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/sso-login.service.abstraction";
import { TokenService } from "@bitwarden/common/auth/abstractions/token.service";
import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service";
import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions";
import { ClientType } from "@bitwarden/common/enums";
@@ -167,12 +168,12 @@ const safeProviders: SafeProvider[] = [
safeProvider({
provide: BiometricsService,
useClass: RendererBiometricsService,
deps: [],
deps: [TokenService],
}),
safeProvider({
provide: DesktopBiometricsService,
useClass: RendererBiometricsService,
deps: [],
deps: [TokenService],
}),
safeProvider(NativeMessagingService),
safeProvider(BiometricMessageHandlerService),

View File

@@ -1,5 +1,7 @@
import { Injectable } from "@angular/core";
import { firstValueFrom } from "rxjs";
import { TokenService } from "@bitwarden/common/auth/abstractions/token.service";
import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/symmetric-crypto-key";
import { UserId } from "@bitwarden/common/types/guid";
import { UserKey } from "@bitwarden/common/types/key";
@@ -13,6 +15,10 @@ import { DesktopBiometricsService } from "./desktop.biometrics.service";
*/
@Injectable()
export class RendererBiometricsService extends DesktopBiometricsService {
constructor(private tokenService: TokenService) {
super();
}
async authenticateWithBiometrics(): Promise<boolean> {
return await ipc.keyManagement.biometric.authenticateWithBiometrics();
}
@@ -31,6 +37,10 @@ export class RendererBiometricsService extends DesktopBiometricsService {
}
async getBiometricsStatusForUser(id: UserId): Promise<BiometricsStatus> {
if ((await firstValueFrom(this.tokenService.hasAccessToken$(id))) === false) {
return BiometricsStatus.NotEnabledInConnectedDesktopApp;
}
return await ipc.keyManagement.biometric.getBiometricsStatusForUser(id);
}