Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-mac-permissions

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-mac-permissions

A native node module to manage system permissions on macOS

  • 1.4.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
435
increased by12.69%
Maintainers
1
Weekly downloads
 
Created
Source

MIT license PRs Welcome Actions Status

node-mac-permissions

$ npm i node-mac-permissions

This native Node.js module allows you to manage an app's access to:

  • Contacts
  • Full Disk Access
  • Calendar
  • Reminders
  • Photos
  • Camera
  • Microphone
  • Accessibility
  • Location
  • Screen Capture

API

permissions.getAuthStatus(type)

  • type String - The type of system component to which you are requesting access. Can be one of accessibility, calendar, camera, contacts, full-disk-access, location, microphone, photos, screen, or reminders.

Returns String - Can be one of not determined, denied, authorized, or restricted.

Checks the authorization status of the application to access type on macOS.

Return Value Descriptions:

  • not determined - The user has not yet made a choice regarding whether the application may access type data.
  • restricted - The application is not authorized to access type data. The user cannot change this application’s status, possibly due to active restrictions such as parental controls being in place.
  • denied - The user explicitly denied access to type data for the application.
  • authorized - The application is authorized to access type data.

Notes:

  • Access to contacts will always return a status of authorized prior to macOS 10.11, as access to contacts was unilaterally allowed until that version.
  • Access to camera and microphone will always return a status of authorized prior to macOS 10.14, as access to contacts was unilaterally allowed until that version.
  • Access to screen will always return a status of authorized prior to macOS 10.15, as access to screen capture was unilaterally allowed until that version.

Example:

const types = [
  'contacts',
  'calendar',
  'reminders',
  'full-disk-access',
  'camera',
  'microphone',
  'accessibility',
  'location'
]

const statuses = ['not determined', 'denied', 'authorized', 'restricted']
for (const type of types) {
  const status = getAuthStatus(type)
  console.log(`Access to ${type} is ${status}`)
}

permissions.askForContactsAccess()

Returns Promise<String> - Whether or not the request succeeded or failed; can be authorized or denied.

Your app’s Info.plist file must provide a value for the NSContactsUsageDescription key that explains to the user why your app is requesting Contacts access.

<key>NSContactsUsageDescription</key>
<string>Your reason for wanting to access the Contact store</string>

Note: status will be resolved back as authorized prior to macOS 10.11, as access to contacts was unilaterally allowed until that version.

Example:

const { askForContactsAccess } = require('node-mac-permissions')

askForContactsAccess().then(status => {
  console.log(`Access to Contacts is ${status}`)
})

permissions.askForCalendarAccess()

Returns Promise<String> - Whether or not the request succeeded or failed; can be authorized or denied.

Example:

const { askForCalendarAccess } = require('node-mac-permissions')

askForCalendarAccess().then(status => {
  console.log(`Access to Calendar is ${status}`)
})

permissions.askForRemindersAccess()

Returns Promise<String> - Whether or not the request succeeded or failed; can be authorized or denied.

Example:

const { askForRemindersAccess } = require('node-mac-permissions')

askForRemindersAccess().then(status => {
  console.log(`Access to Reminders is ${status}`)
})

permissions.askForFullDiskAccess()

There is no API for programmatically requesting Full Disk Access on macOS at this time, and so calling this method will trigger opening of System Preferences at the Full Disk pane of Security and Privacy.

Example:

const { askForFullDiskAccess } = require('node-mac-permissions')

askForFullDiskAccess()

permissions.askForMediaAccess(type)

  • type String - The type of media to which you are requesting access. Can be microphone or camera.

Returns Promise<String> - Whether or not the request succeeded or failed; can be authorized or denied.

Your app must provide an explanation for its use of capture devices using the NSCameraUsageDescription or NSMicrophoneUsageDescription Info.plist keys; Calling this method or attempting to start a capture session without a usage description raises an exception.

<key>`NSCameraUsageDescription</key>
<string>Your reason for wanting to access the Camera</string>
<key>`NSMicrophoneUsageDescription</key>
<string>Your reason for wanting to access the Microphone</string>

Note: status will be resolved back as authorized prior to macOS 10.14 High Sierra, as access to the camera and microphone was unilaterally allowed until that version.

Example:

const { askForMediaAccess } = require('node-mac-permissions')

for (const type of ['microphone', 'camera']) {
  askForMediaAccess(type).then(status => {
    console.log(`Access to media type ${type} is ${status}`)
  })
}

permissions.askForScreenCaptureAccess()

There is no API for programmatically requesting Screen Capture on macOS at this time, and so calling this method will trigger opening of System Preferences at the Screen Capture pane of Security and Privacy.

Example:

const { askForScreenCaptureAccess } = require('node-mac-permissions')

askForScreenCaptureAccess()

permissions.askForAccessibilityAccess()

There is no API for programmatically requesting Accessibility access on macOS at this time, and so calling this method will trigger opening of System Preferences at the Accessibility pane of Security and Privacy.

Example:

const { askForAccessibilityAccess } = require('node-mac-permissions')

askForAccessibilityAccess()

Keywords

FAQs

Package last updated on 25 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc