Zugriffskontrolle definieren
Wir können verwalten, wer auf jedes Feld und jede Direktive im Schema zugreifen darf – über Zugriffskontrolllisten.
Gato GraphQL enthält die folgenden Zugriffskontrollregeln:
- Zugriff deaktivieren
- Zugriff gewähren, wenn der Nutzer eingeloggt oder ausgeloggt ist
- Zugriff gewähren, wenn der Nutzer eine bestimmte Rolle hat
- Zugriff gewähren, wenn der Nutzer eine bestimmte Berechtigung hat
- Zugriff gewähren, wenn der Besucher von einer erlaubten IP-Adresse kommt
Immer wenn die angeforderte Query (entweder über einen benutzerdefinierten Endpoint oder als Persisted Query ausgeführt) ein oder mehrere Felder oder Direktiven enthält, die der Zugriffskontrollliste hinzugefügt wurden, werden die entsprechenden Regeln ausgewertet. Wenn eine Regel nicht erfüllt ist, wird der Zugriff auf dieses Feld oder diese Direktive verweigert.
Die Konfiguration wird über eine Zugriffskontrollliste (ACL) erstellt und über die Schema-Konfiguration an benutzerdefinierte Endpoints und Persisted Queries übergeben.
Alle Zugriffskontrolllisten aufrufen
Ein Klick auf „Access Control Lists" im Menü des Plugins zeigt die Liste aller erstellten Zugriffskontrolllisten an:

Eine neue Zugriffskontrollliste erstellen
Klicke auf die Schaltfläche „Add New Access Control List", um den WordPress-Editor zu öffnen:

Gib der Zugriffskontrollliste einen Titel, füge Einträge mit Operationen, Feldern und Direktiven hinzu, konfiguriere die geltenden Regeln und lege ihre Sichtbarkeit (öffentlich oder privat) fest:

Wenn du fertig bist, klicke auf die Schaltfläche Publish. Die neue Zugriffskontrollliste steht dann für die Schema-Konfiguration zur Verfügung.
Einträge der Zugriffskontrolle
Jede Zugriffskontrollliste enthält einen oder mehrere Einträge, die jeweils folgende Elemente haben:
- Die Operationen, für die der Zugriff gewährt oder verweigert werden soll
- Die Felder, für die der Zugriff gewährt oder verweigert werden soll
- Die Direktiven, für die der Zugriff gewährt oder verweigert werden soll
- Die Liste der zu validierenden Regeln

Felder aus Interfaces auswählen
Zusätzlich zu Feldern aus Typen können wir auch Felder aus Interfaces auswählen. In diesem Fall wird die Zugriffskontrollvalidierung für alle Typen durchgeführt, die das Interface implementieren.

Öffentlicher/privater Modus
Wenn das Modul „Public/Private Schema" aktiviert ist und der Zugriff auf ein Feld oder eine Direktive verweigert wird, kann sich die API auf 2 Arten verhalten:
- Öffentlicher Modus: Dem Nutzer wird eine Fehlermeldung angezeigt, die erklärt, warum der Zugriff verweigert wird
- Privater Modus: Die Fehlermeldung gibt an, dass das Feld oder die Direktive nicht existiert
Wenn dieses Modul nicht aktiviert ist, ist das Standardverhalten öffentlich.
Granularer öffentlicher/privater Modus
Wenn die Option „Enable granular control?" des Moduls „Public/Private Schema" aktiviert ist, hat der Eintrag ein zusätzliches Element:
- Public/Private Schema: Verhalten, wenn der Zugriff verweigert wird

Die Zugriffskontrollliste beschreiben
Verwende das Feld „Excerpt" im Einstellungsbereich des Dokuments, um der Zugriffskontrollliste eine Beschreibung zu geben.
Weitere Informationen findest du in der Anleitung Eine Beschreibung zur API hinzufügen.
Die Zugriffskontrollliste verwenden
Nach dem Erstellen der ACL kannst du dafür sorgen, dass der Custom Endpoint oder die Persisted Query sie verwendet, indem du die entsprechende Schema-Konfiguration bearbeitest und die ACL aus der Liste unter dem Block „Access Control Lists" auswählst.

Wenn die Konfiguration nicht angepasst wird, werden die auf der Einstellungsseite unter dem Tab „Access Control" festgelegten Standard-Zugriffskontrolllisten verwendet:
