Créer une API
Créer une APIDéfinir le contrôle d'accès

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 :

Listes de contrôle d'accès dans l'administration
Listes de contrôle d'accès dans l'administration

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 :

Créer une liste de contrôle d'accès

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) :

Créer une liste de contrôle d'accès

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

Entrée de contrôle d'accès

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.

Sélectionner un champ depuis une interface
Sélectionner un champ depuis une 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é
Mode de schéma Public/Privé individuel
Mode de schéma Public/Privé individuel

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".

Sélectionner une liste de contrôle d'accès dans la Configuration du Schéma
Sélectionner une liste de contrôle d'accès dans la Configuration du Schéma

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 :

Sélectionner les listes de contrôle d'accès par défaut dans la page des Paramètres