Zugriffskontrolle
Gewähre granularen Zugriff auf das Schema, je nachdem ob der Benutzer eingeloggt ist (oder nicht), eine bestimmte Rolle oder Berechtigung hat, und mehr.
Beschreibung
Diese Erweiterung ermöglicht es uns, Zugriffskontrolllisten zu erstellen, um zu verwalten, wer auf die verschiedenen Elemente (Operationen, Felder und Direktiven) des GraphQL-Schemas zugreifen kann.
Dem System wird ein neuer Custom Post Type „Zugriffskontrollliste" hinzugefügt. Wir können die Einträge auf der Seite „Zugriffskontrolllisten" im Menü durchsuchen und auf „Neue Zugriffskontrollliste hinzufügen" klicken, um einen neuen Eintrag im Editor anzulegen.


Im Editor geben wir an, welche Regeln erfüllt sein müssen, um auf welche Schema-Elemente zuzugreifen – aus den Operationen (query oder mutation), Feldern, globalen Feldern und Direktiven.

Wir weisen die Zugriffskontrollliste dem gewünschten Endpoint (privater Endpoint, einzelner Endpoint, benutzerdefinierte Endpoints oder persisted queries) über die Schema-Konfiguration zu.

Bei der Ausführung einer GraphQL-query werden die ausgewählten Regeln ausgewertet, wenn die query eines der in der Zugriffskontrollliste ausgewählten Schema-Elemente enthält.
Wenn eine Regel nicht erfüllt ist, wird der Zugriff auf die jeweilige Operation, das Feld oder die Direktive verweigert, und wir können konfigurieren, wie die API die Antwort liefern soll:
- Öffentlicher Modus: Dem Benutzer wird eine Fehlermeldung angezeigt, die erklärt, warum der Zugriff verweigert wird
- Privater Modus: Die Fehlermeldung gibt an, dass die Operation, das Feld oder die Direktive nicht existiert
Im öffentlichen Modus könnte die Antwort zum Beispiel so aussehen:
{
"errors": [
{
"message": "You must have role 'author' to access field 'title' for type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Im privaten Modus hingegen könnte diese Antwort erscheinen:
{
"errors": [
{
"message": "There is no field 'title' on type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Liste der Zugriffskontrollregeln
Die Erweiterung stellt folgende Zugriffskontrollregeln bereit:
- Zugriff deaktivieren
- Zugriff nur gewähren, wenn der Benutzer ein- oder ausgeloggt ist
- Zugriff nur gewähren, wenn der Benutzer eine bestimmte Rolle hat
- Zugriff nur gewähren, wenn der Benutzer eine bestimmte Berechtigung hat