You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tauri-plugins-workspace/plugins/biometric/guest-js/index.ts

78 lines
1.8 KiB

// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { invoke } from "@tauri-apps/api/core";
export enum BiometryType {
None = 0,
// Apple TouchID or Android fingerprint
TouchID = 1,
// Apple FaceID or Android face authentication
FaceID = 2,
// Android iris authentication
Iris = 3,
}
export interface Status {
isAvailable: boolean;
biometryType: BiometryType;
error?: string;
errorCode?:
| "appCancel"
| "authenticationFailed"
| "invalidContext"
| "notInteractive"
| "passcodeNotSet"
| "systemCancel"
| "userCancel"
| "userFallback"
| "biometryLockout"
| "biometryNotAvailable"
| "biometryNotEnrolled";
}
export interface AuthOptions {
allowDeviceCredential?: boolean;
cancelTitle?: string;
// iOS options
fallbackTitle?: string;
// android options
title?: string;
subtitle?: string;
confirmationRequired?: boolean;
maxAttemps?: number;
}
/**
* Checks if the biometric authentication is available.
* @returns a promise resolving to an object containing all the information about the status of the biometry.
*/
export async function checkStatus(): Promise<Status> {
return invoke("plugin:biometric|status");
}
/**
* Prompts the user for authentication using the system interface (touchID, faceID or Android Iris).
* Rejects if the authentication fails.
*
* ```javascript
* import { authenticate } from "@tauri-apps/plugin-biometric";
* await authenticate('Open your wallet');
* ```
* @param reason
* @param options
* @returns
*/
export async function authenticate(
reason: string,
options?: AuthOptions,
): Promise<void> {
return invoke("plugin:biometric|authenticate", {
reason,
...options,
});
}