Added OS-level authentication with optional App PIN / Offline PIN fallback
This commit is contained in:
40
src/screen/authorised/deviceAuth.ts
Normal file
40
src/screen/authorised/deviceAuth.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import ReactNativeBiometrics from 'react-native-biometrics';
|
||||
|
||||
const rnBiometrics = new ReactNativeBiometrics({
|
||||
allowDeviceCredentials: true, // 👈 IMPORTANT (PIN / Pattern)
|
||||
});
|
||||
|
||||
export const authenticateWithDeviceLock = async () => {
|
||||
try {
|
||||
const { available } = await rnBiometrics.isSensorAvailable();
|
||||
|
||||
if (!available) {
|
||||
return {
|
||||
success: false,
|
||||
message: 'Device lock is not available',
|
||||
};
|
||||
}
|
||||
|
||||
const result = await rnBiometrics.simplePrompt({
|
||||
promptMessage: 'Authenticate to continue',
|
||||
cancelButtonText: 'Cancel',
|
||||
});
|
||||
|
||||
if (result.success) {
|
||||
return {
|
||||
success: true,
|
||||
message: 'Authentication successful',
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
message: 'Authentication cancelled',
|
||||
};
|
||||
}
|
||||
} catch (error: any) {
|
||||
return {
|
||||
success: false,
|
||||
message: error?.message || 'Authentication failed',
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user