Toegangsbeheer
ToegangsbeheerToegangscontrole

Toegangscontrole

Included in the “Power Extensions” bundle

Verleen gedetailleerde toegang tot het schema, op basis van of de gebruiker ingelogd is (of niet), een bepaalde rol of bevoegdheid heeft, en meer.

Beschrijving

Met deze extensie kun je Toegangscontrolelijsten aanmaken om te beheren wie toegang heeft tot de verschillende elementen (operaties, velden en directives) van het GraphQL-schema.

Er wordt een nieuw Custom Post Type "Toegangscontrolelijst" aan de site toegevoegd. Je kunt de vermeldingen bekijken op de pagina "Toegangscontrolelijsten" in het menu, en klikken op "Nieuwe Toegangscontrolelijst toevoegen" om een nieuwe vermelding in de editor aan te maken.

Toegangscontrolelijsten
Toegangscontrolelijsten
Editor voor Toegangscontrolelijst
Editor voor Toegangscontrolelijst

In de editor geef je aan welke regels moeten worden voldaan om toegang te krijgen tot bepaalde schema-elementen, waaronder operaties (query of mutation), velden, globale velden en directives.

Een Toegangscontrolelijst aanmaken

Je wijst de Toegangscontrolelijst toe aan het gewenste endpoint (privé-endpoint, enkel endpoint, aangepaste endpoints of persisted queries) via de Schemaconfiguratie.

Een Toegangscontrolelijst selecteren in de Schemaconfiguratie
Een Toegangscontrolelijst selecteren in de Schemaconfiguratie

Wanneer een GraphQL query wordt uitgevoerd en deze een van de geselecteerde schema-elementen uit de Toegangscontrolelijst bevat, worden de gekozen regels geëvalueerd.

Als een regel niet wordt nageleefd, wordt de toegang tot die operatie, dat veld of die directive geweigerd. Je kunt instellen hoe de API de respons moet geven:

  • Publieke modus: Geeft de gebruiker een foutmelding met uitleg waarom de toegang is geweigerd
  • Privémodus: De foutmelding geeft aan dat de operatie, het veld of de directive niet bestaat

In de publieke modus kan de respons er bijvoorbeeld zo uitzien:

{
  "errors": [
    {
      "message": "You must have role 'author' to access field 'title' for type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

In de privémodus kan de respons er zo uitzien:

{
  "errors": [
    {
      "message": "There is no field 'title' on type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

Lijst van Toegangscontoleregels

De extensie biedt de volgende Toegangscontoleregels:

  • Toegang uitschakelen
  • Toegang alleen verlenen als de gebruiker ingelogd of uitgelogd is
  • Toegang alleen verlenen als de gebruiker een bepaalde rol heeft
  • Toegang alleen verlenen als de gebruiker een bepaalde bevoegdheid heeft