Contrôle d'accès
Contrôle d'accèsContrôle d'Accès

Contrôle d'Accès

Included in the “Power Extensions” bundle

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.

Listes de Contrôle d'Accès
Listes de Contrôle d'Accès
Éditeur de Liste de Contrôle d'Accès
Éditeur de Liste de Contrôle d'Accès

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.

Création d'une Liste de Contrôle d'Accès

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.

Sélection d'une Liste de Contrôle d'Accès dans la Configuration du Schéma
Sélection d'une Liste de Contrôle d'Accès dans 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é