Contrôle d'Accès
Accorde un accès granulaire au schéma, selon que l'utilisateur est connecté (ou non), possède un certain rôle ou une certaine capacité, et plus encore.
Description
Cette extension nous permet de créer des Listes de Contrôle d'Accès, pour gérer qui peut accéder aux différents éléments (opérations, champs et directives) du schéma GraphQL.
Un nouveau Custom Post Type « Liste de Contrôle d'Accès » est ajouté au site. Nous pouvons parcourir ses entrées sur la page « Listes de Contrôle d'Accès » dans le menu, et cliquer sur « Ajouter une Nouvelle Liste de Contrôle d'Accès » pour ajouter une nouvelle entrée dans l'éditeur.


Dans l'éditeur, nous indiquons quelles règles doivent être satisfaites pour accéder à quels éléments du schéma, parmi les opérations (query ou mutation), les champs, les champs globaux et les directives.

Nous assignons la Liste de Contrôle d'Accès à l'endpoint souhaité (endpoint privé, endpoint unique, endpoints personnalisés ou persisted queries) via la Configuration du Schéma.

Lors de l'exécution d'une requête GraphQL, si elle contient l'un des éléments du schéma sélectionnés dans la Liste de Contrôle d'Accès, les règles choisies sont évaluées.
Si une règle n'est pas satisfaite, l'accès à cette opération, ce champ ou cette directive est refusé, et nous pouvons configurer la façon dont l'API doit fournir la réponse :
- Mode public : Fournir un message d'erreur à l'utilisateur, indiquant pourquoi l'accès est refusé
- Mode privé : Le message d'erreur indique que l'opération, le champ ou la directive n'existe pas
Par exemple, en mode public, nous pouvons obtenir cette réponse :
{
"errors": [
{
"message": "You must have role 'author' to access field 'title' for type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Tandis qu'en mode privé nous pouvons obtenir cette réponse :
{
"errors": [
{
"message": "There is no field 'title' on type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Liste des règles de Contrôle d'Accès
L'extension fournit les règles de Contrôle d'Accès suivantes :
- Désactiver l'accès
- Accorder l'accès uniquement si l'utilisateur est connecté ou déconnecté
- Accorder l'accès uniquement si l'utilisateur possède un certain rôle
- Accorder l'accès uniquement si l'utilisateur possède une certaine capacité