Access Control
Przyznaj szczegółowy dostęp do schematu (na podstawie tego, czy użytkownik jest zalogowany, posiada określoną rolę lub uprawnienie, albo według adresu IP), aby zarządzać tym, kto może uzyskać dostęp do jakich danych.

Click to watch tutorial video - 08:04
Zdefiniuj Listy Kontroli Dostępu, aby zarządzać szczegółowym dostępem do API dla swoich użytkowników.
Listy Kontroli Dostępu
To rozszerzenie pozwala 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, używając następujących reguł:
- 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
- Przyznaj dostęp tylko wtedy, gdy odwiedzający pochodzi z dozwolonego adresu IP

Wskazujemy, które reguły muszą być spełnione, aby uzyskać dostęp do określonych elementów schematu — spośród operacji, pól, pól globalnych i dyrektyw.
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 jest spełniona, dostęp do danej operacji, pola lub dyrektywy jest odmówiony.
Tryb Schematu Publiczny/Prywatny
Gdy dostęp do pola lub dyrektywy jest odmówiony przez Kontrolę Dostępu, API może zachowywać się na 2 sposoby:
Tryb publiczny: Pola w schemacie są widoczne, a gdy uprawnienie nie jest spełnione, użytkownik otrzymuje komunikat o błędzie z opisem powodu odrzucenia uprawnienia. To zachowanie sprawia, że metadane schematu są zawsze dostępne.
Tryb prywatny: Schemat jest dostosowany do każdego użytkownika — zawiera tylko pola dostępne dla danej osoby, dlatego przy próbie dostępu do zabronionego pola komunikat o błędzie informuje, że pole nie istnieje. To zachowanie udostępnia metadane schematu tylko tym użytkownikom, którzy mają do nich dostęp.

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
}
]
}
]
}