mirror of
https://github.com/bitwarden/browser.git
synced 2025-03-19 14:49:13 +01: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:
parent
ca9bb52a89
commit
97ee050e5d
@ -362,14 +362,24 @@ export class SettingsComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
});
|
||||
|
||||
this.supportsBiometric =
|
||||
(await this.biometricsService.getBiometricsStatus()) === BiometricsStatus.Available;
|
||||
this.supportsBiometric = this.shouldAllowBiometricSetup(
|
||||
await this.biometricsService.getBiometricsStatus(),
|
||||
);
|
||||
this.timerId = setInterval(async () => {
|
||||
this.supportsBiometric =
|
||||
(await this.biometricsService.getBiometricsStatus()) === BiometricsStatus.Available;
|
||||
this.supportsBiometric = this.shouldAllowBiometricSetup(
|
||||
await this.biometricsService.getBiometricsStatus(),
|
||||
);
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
private shouldAllowBiometricSetup(biometricStatus: BiometricsStatus): boolean {
|
||||
return [
|
||||
BiometricsStatus.Available,
|
||||
BiometricsStatus.AutoSetupNeeded,
|
||||
BiometricsStatus.ManualSetupNeeded,
|
||||
].includes(biometricStatus);
|
||||
}
|
||||
|
||||
async saveVaultTimeout(newValue: VaultTimeout) {
|
||||
if (newValue === VaultTimeoutStringType.Never) {
|
||||
const confirmed = await this.dialogService.openSimpleDialog({
|
||||
|
@ -117,15 +117,15 @@ describe("biometrics tests", function () {
|
||||
const testCases = [
|
||||
// happy path
|
||||
[true, false, false, BiometricsStatus.Available],
|
||||
[false, true, true, BiometricsStatus.AutoSetupNeeded],
|
||||
[false, true, false, BiometricsStatus.ManualSetupNeeded],
|
||||
[false, false, false, BiometricsStatus.HardwareUnavailable],
|
||||
[false, true, true, BiometricsStatus.HardwareUnavailable],
|
||||
[true, true, true, BiometricsStatus.AutoSetupNeeded],
|
||||
[true, true, false, BiometricsStatus.ManualSetupNeeded],
|
||||
|
||||
// should not happen
|
||||
[false, false, true, BiometricsStatus.HardwareUnavailable],
|
||||
[true, true, true, BiometricsStatus.Available],
|
||||
[true, true, false, 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) {
|
||||
|
@ -60,6 +60,8 @@ export class MainBiometricsService extends DesktopBiometricsService {
|
||||
*/
|
||||
async getBiometricsStatus(): Promise<BiometricsStatus> {
|
||||
if (!(await this.osBiometricsService.osSupportsBiometric())) {
|
||||
return BiometricsStatus.HardwareUnavailable;
|
||||
} else {
|
||||
if (await this.osBiometricsService.osBiometricsNeedsSetup()) {
|
||||
if (await this.osBiometricsService.osBiometricsCanAutoSetup()) {
|
||||
return BiometricsStatus.AutoSetupNeeded;
|
||||
@ -67,8 +69,6 @@ export class MainBiometricsService extends DesktopBiometricsService {
|
||||
return BiometricsStatus.ManualSetupNeeded;
|
||||
}
|
||||
}
|
||||
|
||||
return BiometricsStatus.HardwareUnavailable;
|
||||
}
|
||||
return BiometricsStatus.Available;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user