1.0.0 • Published 4 years ago

node-mac-auth v1.0.0

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

MIT license PRs Welcome GitHub release Actions Status

node-mac-auth

A native node module that allows you to query and handle native macOS biometric authentication.

This module will have no effect unless there's an app bundle to own it: without one the API will simply appear not to run as a corollary of the way macOS handles native UI APIs.

Nota Bene: This module does not nor is it intended to perform process privilege escalation, e.g. allow you to authenticate as an admin user.

API

canPromptTouchID()

Returns Boolean - whether or not this device has the ability to use Touch ID.

const { canPromptTouchID } = require('node-mac-auth')

const canPrompt = canPromptTouchID()
console.log(`I ${canPrompt ? 'can' : 'cannot'} prompt for TouchID!`)

NOTE: This API will return false on macOS systems older than Sierra 10.12.2.

promptTouchID(options)

  • options Object
    • reason String - The reason you are asking for Touch ID authentication.
    • reuseDuration Number - The duration for which Touch ID authentication reuse is allowable, in seconds.

Returns Promise<void>.

const { promptTouchID } = require('node-mac-auth')

promptTouchID({ reason: 'To get consent for a Security-Gated Thing' }).then(() => {
  console.log('You have successfully authenticated with Touch ID!')
}).catch(err => {
  console.log('TouchID failed because: ', err)
})

NOTE: This API will have no effect on macOS systems older than Sierra 10.12.2.

Trying It Out

To see this module in action:

$ git clone https://github.com/electron/electron-quick-start
$ cd electron-quick-start
$ npm install
$ npm install node-mac-auth

then open main.js inside electron-quick-start and add:

const { canPromptTouchID, promptTouchID } = require('node-mac-auth')

to the top at line 4, and

const canPrompt = canPromptTouchID()
console.log(`I ${canPrompt ? 'can' : 'cannot'} prompt for TouchID!`)

promptTouchID({ reason: 'To get consent for a Security-Gated Thing' }).then(() => {
  console.log('You have successfully authenticated with Touch ID!')
}).catch(err => {
  console.log('TouchID failed because: ', err)
})

Inside the createWindow function beginning at line 9. Enjoy!