Permissions API
===============

L'API Permissions fournit une manière cohérente pour connaître, dans un programme, le statut des permissions dans le contexte courant. On pourra par exemple utiliser cette API afin de déterminer si la permission d'accéder à une API donnée a été accordée ou refusée.

**Note :** Cette fonctionnalité est disponible via les Web Workers bien que les versions actuelles de Firefox n'implémentent pas WorkerNavigator.permissions (en-US).

Concepts et usages
------------------

Historiquement les differentes API géraient leurs propres permissions de façon peu cohérente. L'API Notifications par exemple permet de vérifier explicitement l'état d'autorisation et de déclencher la demande de permission tandis que l'API Geolocation ne permet pas ce fonctionnement (ce qui peut poser problème lorsque l'utilisateur a refusé la requête de permission initiale). L'API Permissions fournit un ensemble d'outils pour permettre aux développeuses et développeurs d'implémenter une meilleure ergonomie en ce qui concerne les permissions.

La propriété `permissions` est accessible via l'objet `Navigator`, dans le contexte standard du navigateur et dans le contexte des *workers* (`WorkerNavigator` (en-US), ce qui permet de vérifier l'état des permissions depuis les *workers*). Cette propriété renvoie un objet `Permissions` (en-US) qui fournit l'accès aux fonctionalités de l'API Permissions.

Lorsque cet objet a été récupéré, on peut réaliser différentes opérations relatives aux permissions. On peut par exemple connaître l'état d'une permission en utilisant la méthode `Permissions.query()` (en-US) qui renvoie une promesse dont la résolution est un objet `PermissionStatus` (en-US) renseignant sur l'état d'autorisation pour une API donnée.

L'API Permissions ne donne pas accès aux permissions de l'ensemble des API. Voici un sous-ensemble d'API qui peuvent fonctionner avec l'API Permissions :

* L'API Clipboard (pour la gestion du presse-papiers)
* L'API Notifications
* L'API Push
* L'API Web MIDI

À l'avenir, davantage d'API devraient être prises en charge par l'API Permissions.

Exemples
--------

Voici un exemple simple nommé *Location Finder*. Vous pouvez lancer cet exemple en live ici, ou voir le code source sur GitHub.

Vous pouvez également en lire plus sur le fonctionnement de cet exemple dans l'article Utiliser l'API Permissions (en-US).

Interfaces
----------

`Navigator.permissions` (en-US) (respectivement `WorkerNavigator.permissions` (en-US)) Lecture seule 

Fournit un accès à l'objet `Permissions` (en-US) depuis le contexte principal (respectivement celui du worker).

`Permissions` (en-US)

Fournit les principales fonctionalités de l'API Permissions, telles que les méthodes de demande et de révocation des permissions.

`PermissionStatus` (en-US)

Fournit l'accès à l'état actuel d'une permission ainsi qu'un gestionnaire d'évènements pour répondre aux changements d'état d'une permission.

Spécifications
--------------

| Specification |
| --- |
| Permissions  |

Compatibilité des navigateurs
-----------------------------

### api.Permissions

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.Navigator.permissions

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.WorkerNavigator.permissions

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser l'API Permissions (en-US)
* *Using the Permissions API to Detect How Often Users Allow or Deny Camera Access*
*Using the Permissions API to Detect How Often Users Allow or Deny Camera Access* (en anglais)
* `Notification.permission`
* Confidentialité, permissions et sécurité de l'information (en-US)