Access Control
Şemaya ayrıntılı erişim izni verin (kullanıcının oturum açmış olmasına, belirli bir role ya da yetkiye sahip olmasına veya IP adresine göre), kimin hangi verilere erişebileceğini yönetin.

Click to watch tutorial video - 08:04
Kullanıcılarınız için API'ye ayrıntılı erişimi yönetmek amacıyla Erişim Denetim Listeleri tanımlayın.
Erişim Denetim Listeleri
Bu eklenti, GraphQL şemasındaki farklı öğelere (işlemler, alanlar ve direktifler) kimin erişebileceğini yönetmek için Erişim Denetim Listeleri oluşturmamıza olanak tanır; bunun için aşağıdaki kurallar kullanılır:
- Erişimi devre dışı bırak
- Yalnızca kullanıcı oturum açmışsa veya açmamışsa erişim ver
- Yalnızca kullanıcı belirli bir role sahipse erişim ver
- Yalnızca kullanıcı belirli bir yetkiye sahipse erişim ver
- Yalnızca ziyaretçi izin verilen bir IP'den geliyorsa erişim ver

İşlemler, alanlar, global alanlar ve direktifler arasından hangi şema öğelerine erişmek için hangi kuralların karşılanması gerektiğini belirtiriz.
Bir GraphQL query çalıştırılırken, Erişim Denetim Listesinde seçili şema öğelerinden herhangi birini içeriyorsa seçilen kurallar değerlendirilir.
Herhangi bir kural karşılanmazsa ilgili işleme, alana veya direktife erişim reddedilir.
Genel/Özel Şema Modu
Erişim Denetimi aracılığıyla bir alana veya direktife erişim reddedildiğinde, API'nin davranabileceği 2 yol vardır:
Genel mod: Şemadaki alanlar açığa çıkar ve izin karşılanmadığında kullanıcı, iznin neden reddedildiğine dair bir açıklama içeren hata mesajı alır. Bu davranış, şemadan alınan meta verileri her zaman erişilebilir kılar.
Özel mod: Şema her kullanıcıya göre özelleştirilir ve yalnızca o kullanıcının erişebildiği alanları içerir; bu nedenle yasaklı bir alana erişilmeye çalışıldığında hata mesajı, alanın mevcut olmadığını belirtir. Bu davranış, şemadan alınan meta verileri yalnızca erişim yetkisi olan kullanıcılara gösterir.

Örneğin, genel modda şu yanıtı alabiliriz:
{
"errors": [
{
"message": "You must have role 'author' to access field 'title' for type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Özel modda ise şu yanıtı alabiliriz:
{
"errors": [
{
"message": "There is no field 'title' on type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}