Skip to content

BartoszKlonowski/react-native-windows-hello

Repository files navigation

React Native Windows library providing developers with all Windows Hello features.

Latest version released on npmjs Build on CircleCI License

The following library allows you to use all features of Windows Hello functionality. This includes the signing-in options and passport. This library is a set of native methods providing easy API to fetch the device availability, sign in using your biometrics.


Installation & Usage

To install this module cd to your project directory and enter the following command:

yarn add -D react-native-windows-hello

or

npm install react-native-windows-hello --save

After having it installed you can import all the Windows Hello features like so:

import { SignIn, verificationResult, availabilityStatus } from 'react-native-windows-hello';

The API contains two methods: requestConsentVerification and getDeviceStatus each returning a promise with result object containing both value and message with pre-defined text (in english) describing the returned result.
So the example of usage would be:

SignIn.requestConsentVerification("This customized message will be displayed in biometric prompt")
  .then(result => {
    Alert.alert(
      `${result === verificationResult.Verified ? "SUCCESS" : "ERROR"}`,
      result.message
    );
  })
  .catch(error => {
    Alert.alert("ERROR:", `${error}`);
  });

Check out the example project for more examples.


API

The following library provides you with the native modules exposing the following methods:

Method & Description Arguments Returns
SignIn.getDeviceStatus
Gets the status of biometric device on a user's machine and returns a promise with the result.
The returned promise is resolved with a status, and is rejected in case of any internal issues/errors.
- Promise
with
availabilityStatus
SignIn.requestConsentVerification
Displays the biometric scan prompt as a popup and returns a promise after user's actions.
The returned promise is resolved no matter if the verification was successful or not, and is rejected in case of any internal failure/error or when incorrect promptMessage has been passed as an argument.
promptMessage : String
Additional text which will be placed in the login prompt popup.
Promise
with
verificationResult

Status result object

Each method returns one of the enumerated objects representing the result of called action (getDeviceStatus, requestConsentVerification). Each of these objects contain two properties:

  • value - contains numerical value matching the official values. This can be used by developers for internal implementation keeping the last result for simplicity.
  • message - official text (in english) saying exactly what the result is. This can be used to directly display the status without conversions.

There are two groups of result objects:

Result value message
Available 0 "A biometric verifier device is available."
DeviceNotPresent 1 "There is no biometric verifier device available."
NotConfiguredForUser 2 "A biometric verifier device is not configured for this user."
DisabledByPolicy 3 "Group policy has disabled the biometric verifier device."
DeviceBusy 4 "The biometric verifier device is performing an operation and is unavailable."

and

Result value message
Verified 0 "User consent verified"
DeviceNotPresent 1 "There is no biometric verifier device available."
NotConfiguredForUser 2 "A biometric verifier device is not configured for this user."
DisabledByPolicy 3 "Group policy has disabled the biometric verifier device."
DeviceBusy 4 "The biometric verifier device is performing an operation and is unavailable."
RetriesExhausted 5 "After 10 attempts, the original verification request and all subsequent attempts at the same verification were not verified."
Canceled 6 "The verification operation was canceled."

Contributing

If you would like to contribute to the react-native-windows-hello project, you are more than welcome! You can do this by:

  • Create an Issue and let the author handle it
    Each issue created in the Issues section gives a chance of improving the project and make it even more useful.
  • Create the Pull Request with the desired changes
    When creating the pull request please remember to describe changes you made and how to test them. A short demo of any kind is very appreciated.

Setting up the project

To start developing you need to fork this project, and clone your fork.
After that you can:

  • yarn install
  • Implement changes (mostly in windows/ReactNativeWindowsHello/Source directory)
  • After implementation you can check the build by running:
    msbuild -p:Configuration=Debug -p:Platform=x64 .\windows\ReactNativeWindowsHello.sln
    Or launch the build through the Visual Studio.