1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-12 22:33:35 +00:00

[PM-17113] Fix system authentication setup (#12907)

* Fix system authentication setup

* Fix biometric status

* Remove debug log

* Fix tests
This commit is contained in:
Bernd Schoolmann
2025-01-16 17:49:20 +01:00
committed by GitHub
parent ca9bb52a89
commit 97ee050e5d
3 changed files with 21 additions and 11 deletions

View File

@@ -362,14 +362,24 @@ export class SettingsComponent implements OnInit, OnDestroy {
} }
}); });
this.supportsBiometric = this.supportsBiometric = this.shouldAllowBiometricSetup(
(await this.biometricsService.getBiometricsStatus()) === BiometricsStatus.Available; await this.biometricsService.getBiometricsStatus(),
);
this.timerId = setInterval(async () => { this.timerId = setInterval(async () => {
this.supportsBiometric = this.supportsBiometric = this.shouldAllowBiometricSetup(
(await this.biometricsService.getBiometricsStatus()) === BiometricsStatus.Available; await this.biometricsService.getBiometricsStatus(),
);
}, 1000); }, 1000);
} }
private shouldAllowBiometricSetup(biometricStatus: BiometricsStatus): boolean {
return [
BiometricsStatus.Available,
BiometricsStatus.AutoSetupNeeded,
BiometricsStatus.ManualSetupNeeded,
].includes(biometricStatus);
}
async saveVaultTimeout(newValue: VaultTimeout) { async saveVaultTimeout(newValue: VaultTimeout) {
if (newValue === VaultTimeoutStringType.Never) { if (newValue === VaultTimeoutStringType.Never) {
const confirmed = await this.dialogService.openSimpleDialog({ const confirmed = await this.dialogService.openSimpleDialog({

View File

@@ -117,15 +117,15 @@ describe("biometrics tests", function () {
const testCases = [ const testCases = [
// happy path // happy path
[true, false, false, BiometricsStatus.Available], [true, false, false, BiometricsStatus.Available],
[false, true, true, BiometricsStatus.AutoSetupNeeded], [false, true, true, BiometricsStatus.HardwareUnavailable],
[false, true, false, BiometricsStatus.ManualSetupNeeded], [true, true, true, BiometricsStatus.AutoSetupNeeded],
[false, false, false, BiometricsStatus.HardwareUnavailable], [true, true, false, BiometricsStatus.ManualSetupNeeded],
// should not happen // should not happen
[false, false, true, BiometricsStatus.HardwareUnavailable], [false, false, true, BiometricsStatus.HardwareUnavailable],
[true, true, true, BiometricsStatus.Available],
[true, true, false, BiometricsStatus.Available],
[true, false, true, BiometricsStatus.Available], [true, false, true, BiometricsStatus.Available],
[false, true, false, BiometricsStatus.HardwareUnavailable],
[false, false, false, BiometricsStatus.HardwareUnavailable],
]; ];
for (const [supportsBiometric, needsSetup, canAutoSetup, expected] of testCases) { for (const [supportsBiometric, needsSetup, canAutoSetup, expected] of testCases) {

View File

@@ -60,6 +60,8 @@ export class MainBiometricsService extends DesktopBiometricsService {
*/ */
async getBiometricsStatus(): Promise<BiometricsStatus> { async getBiometricsStatus(): Promise<BiometricsStatus> {
if (!(await this.osBiometricsService.osSupportsBiometric())) { if (!(await this.osBiometricsService.osSupportsBiometric())) {
return BiometricsStatus.HardwareUnavailable;
} else {
if (await this.osBiometricsService.osBiometricsNeedsSetup()) { if (await this.osBiometricsService.osBiometricsNeedsSetup()) {
if (await this.osBiometricsService.osBiometricsCanAutoSetup()) { if (await this.osBiometricsService.osBiometricsCanAutoSetup()) {
return BiometricsStatus.AutoSetupNeeded; return BiometricsStatus.AutoSetupNeeded;
@@ -67,8 +69,6 @@ export class MainBiometricsService extends DesktopBiometricsService {
return BiometricsStatus.ManualSetupNeeded; return BiometricsStatus.ManualSetupNeeded;
} }
} }
return BiometricsStatus.HardwareUnavailable;
} }
return BiometricsStatus.Available; return BiometricsStatus.Available;
} }