Erişim Kontrolü
Erişim KontrolüErişim Kontrolü

Erişim Kontrolü

Included in the “Power Extensions” bundle

Kullanıcının oturum açmış olup olmamasına, belirli bir role veya yetkiye sahip olmasına ve daha fazlasına göre şemaya ayrıntılı erişim izni verin.

Açıklama

Bu eklenti, GraphQL şemasındaki farklı öğelere (işlemler, alanlar ve yönergeler) kimlerin erişebileceğini yönetmek için Erişim Kontrol Listeleri oluşturmamıza olanak tanır.

Siteye yeni bir "Erişim Kontrol Listesi" Custom Post Type eklenir. Girdilerini menüdeki "Erişim Kontrol Listeleri" sayfasında görebilir ve editörde yeni bir girdi eklemek için "Yeni Erişim Kontrol Listesi Ekle" seçeneğine tıklayabiliriz.

Erişim Kontrol Listeleri
Erişim Kontrol Listeleri
Erişim Kontrol Listesi editörü
Erişim Kontrol Listesi editörü

Editörde, işlemler (query veya mutation), alanlar, global alanlar ve yönergeler arasından hangi şema öğelerine erişmek için hangi kuralların karşılanması gerektiğini belirtiriz.

Erişim Kontrol Listesi Oluşturma

Şema Yapılandırması aracılığıyla Erişim Kontrol Listesini istenen uç noktaya (özel uç nokta, tek uç nokta, özel uç noktalar veya persisted queries) atarız.

Şema Yapılandırmasında bir Erişim Kontrol Listesi seçimi
Şema Yapılandırmasında bir Erişim Kontrol Listesi seçimi

Bir GraphQL sorgusu çalıştırılırken, eğer Erişim Kontrol Listesindeki seçili şema öğelerinden herhangi birini içeriyorsa, seçilen kurallar değerlendirilir.

Herhangi bir kural karşılanmazsa, o işlem, alan veya yönergeye erişim reddedilir ve API'nin yanıtı nasıl sağlayacağını yapılandırabiliriz:

  • Genel mod: Kullanıcıya, erişimin neden reddedildiğini belirten bir hata mesajı ilet
  • Özel mod: Hata mesajı, işlemin, alanın veya yönergenin mevcut olmadığını belirtir

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

Erişim Kontrol kuralları listesi

Eklenti aşağıdaki Erişim Kontrol kurallarını sağlar:

  • Erişimi devre dışı bırak
  • Yalnızca kullanıcı oturum açmışsa veya oturum kapatmışsa erişim izni ver
  • Yalnızca kullanıcının belirli bir rolü varsa erişim izni ver
  • Yalnızca kullanıcının belirli bir yetkisi varsa erişim izni ver