Kontrola Dostępu
Przyznaj szczegółowy dostęp do schematu na podstawie tego, czy użytkownik jest zalogowany (lub nie), posiada określoną rolę lub uprawnienie i nie tylko.
Opis
To rozszerzenie pozwala nam tworzyć Listy Kontroli Dostępu, aby zarządzać tym, kto może uzyskać dostęp do różnych elementów (operacji, pól i dyrektyw) schematu GraphQL.
Do witryny zostaje dodany nowy Custom Post Type „Lista Kontroli Dostępu". Możemy przeglądać jego wpisy na stronie „Listy Kontroli Dostępu" w menu i kliknąć „Dodaj Nową Listę Kontroli Dostępu", aby dodać nowy wpis w edytorze.


W edytorze wskazujemy, jakie reguły muszą być spełnione, aby uzyskać dostęp do określonych elementów schematu, spośród operacji (query lub mutation), pól, pól globalnych i dyrektyw.

Przypisujemy Listę Kontroli Dostępu do wybranego endpointu (prywatny endpoint, pojedynczy endpoint, niestandardowe endpointy lub persisted queries) za pomocą Konfiguracji Schematu.

Podczas wykonywania query GraphQL, jeśli zawiera ona którykolwiek z wybranych elementów schematu z Listy Kontroli Dostępu, wybrane reguły są oceniane.
Jeśli jakakolwiek reguła nie zostanie spełniona, dostęp do tej operacji, pola lub dyrektywy jest odmówiony, a my możemy skonfigurować, w jaki sposób API powinno zwrócić odpowiedź:
- Tryb publiczny: Udostępnia użytkownikowi komunikat o błędzie wyjaśniający, dlaczego dostęp został odmówiony
- Tryb prywatny: Komunikat o błędzie informuje, że operacja, pole lub dyrektywa nie istnieje
Na przykład w trybie publicznym możemy otrzymać taką odpowiedź:
{
"errors": [
{
"message": "You must have role 'author' to access field 'title' for type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Natomiast w trybie prywatnym możemy otrzymać taką odpowiedź:
{
"errors": [
{
"message": "There is no field 'title' on type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Lista reguł Kontroli Dostępu
Rozszerzenie udostępnia następujące reguły Kontroli Dostępu:
- Wyłącz dostęp
- Przyznaj dostęp tylko wtedy, gdy użytkownik jest zalogowany lub wylogowany
- Przyznaj dostęp tylko wtedy, gdy użytkownik posiada określoną rolę
- Przyznaj dostęp tylko wtedy, gdy użytkownik posiada określone uprawnienie