Définir le contrôle d'accès
Nous pouvons gérer qui peut accéder à chaque champ et directive du schéma via des listes de contrôle d'accès.
Gato GraphQL est livré avec les règles de contrôle d'accès suivantes :
- Désactiver l'accès
- Accorder l'accès si l'utilisateur est connecté ou non
- Accorder l'accès si l'utilisateur possède un certain rôle
- Accorder l'accès si l'utilisateur possède une certaine capacité
- Accorder l'accès si le visiteur provient d'une adresse IP autorisée
Chaque fois que la requête demandée (exécutée via un endpoint personnalisé ou comme une requête persistée) contient un ou plusieurs champs ou directives ajoutés à la liste de contrôle d'accès, les règles correspondantes sont évaluées. Si une règle n'est pas satisfaite, l'accès à ce champ ou à cette directive est refusé.
La configuration est créée via une liste de contrôle d'accès (ACL), et transmise aux endpoints personnalisés et aux requêtes persistées via la configuration du schéma.
Accéder à toutes les listes de contrôle d'accès
En cliquant sur "Access Control Lists" dans le menu du plugin, la liste de toutes les listes de contrôle d'accès créées s'affiche :

Créer une nouvelle liste de contrôle d'accès
Cliquez sur le bouton "Add New Access Control List" pour ouvrir l'éditeur WordPress :

Donnez un titre à la liste de contrôle d'accès, ajoutez des entrées avec des opérations, des champs et des directives, configurez les règles qui leur s'appliquent, et définissez leur visibilité (publique ou privée) :

Quand elle est prête, cliquez sur le bouton Publier. La nouvelle liste de contrôle d'accès devient alors disponible pour la configuration du schéma.
Entrées de contrôle d'accès
Chaque liste de contrôle d'accès contient une ou plusieurs entrées, chacune comportant les éléments suivants :
- Les opérations auxquelles accorder ou refuser l'accès
- Les champs auxquels accorder ou refuser l'accès
- Les directives auxquelles accorder ou refuser l'accès
- La liste des règles à valider

Sélectionner des champs depuis des interfaces
En plus des champs provenant des types, nous pouvons également sélectionner des champs provenant d'interfaces. Dans ce cas, la validation du contrôle d'accès est effectuée sur tous les types implémentant l'interface.

Mode public/privé
Si le module "Public/Private Schema" est activé, lorsque l'accès à un champ ou à une directive est refusé, il y a 2 façons pour l'API de se comporter :
- Mode public : fournit un message d'erreur à l'utilisateur, indiquant pourquoi l'accès est refusé
- Mode privé : le message d'erreur indique que le champ ou la directive n'existe pas
Si ce module n'est pas activé, le comportement par défaut est public.
Mode public/privé granulaire
Si l'option "Enable granular control?" du module "Public/Private Schema" est activée, l'entrée comporte un élément supplémentaire :
- Schéma Public/Privé : comportement lorsque l'accès est refusé

Décrire la liste de contrôle d'accès
Utilisez le champ "Extrait", dans le panneau des paramètres du document, pour donner une description à la liste de contrôle d'accès.
Trouvez plus d'informations dans le guide Ajouter une description à l'API.
Utiliser la liste de contrôle d'accès
Après avoir créé l'ACL, nous pouvons faire en sorte que l'Endpoint Personnalisé ou la Requête Persistée l'utilise en modifiant la Configuration du Schéma correspondante, et en sélectionnant l'ACL dans la liste sous le bloc "Access Control Lists".

Si la configuration n'est pas personnalisée, les listes de contrôle d'accès par défaut définies dans la page des Paramètres, sous l'onglet "Access Control", seront utilisées :
