Kontrol Akses
Kontrol AksesKontrol Akses

Kontrol Akses

Included in the “Power Extensions” bundle

Berikan akses granular ke skema, berdasarkan apakah pengguna sudah masuk (atau tidak), memiliki peran atau kemampuan tertentu, dan lainnya.

Deskripsi

Ekstensi ini memungkinkan kita membuat Daftar Kontrol Akses, untuk mengelola siapa yang dapat mengakses berbagai elemen (operasi, bidang, dan direktif) dari skema GraphQL.

Sebuah Custom Post Type "Daftar Kontrol Akses" baru ditambahkan ke situs. Kita dapat menelusuri entri-entrinya di halaman "Daftar Kontrol Akses" di menu, dan mengklik "Tambah Daftar Kontrol Akses Baru" untuk menambahkan entri baru di editor.

Daftar Kontrol Akses
Daftar Kontrol Akses
Editor Daftar Kontrol Akses
Editor Daftar Kontrol Akses

Di editor, kita menentukan aturan apa yang harus dipenuhi untuk mengakses elemen skema apa, dari antara operasi (query atau mutation), bidang, bidang global, dan direktif.

Membuat Daftar Kontrol Akses

Kita menetapkan Daftar Kontrol Akses ke endpoint yang diinginkan (endpoint privat, endpoint tunggal, endpoint kustom, atau persisted queries) melalui Konfigurasi Skema.

Memilih Daftar Kontrol Akses di Konfigurasi Skema
Memilih Daftar Kontrol Akses di Konfigurasi Skema

Saat mengeksekusi sebuah GraphQL query, jika query tersebut mengandung salah satu elemen skema yang dipilih dalam Daftar Kontrol Akses, aturan yang dipilih akan dievaluasi.

Jika ada aturan yang tidak terpenuhi, akses ke operasi, bidang, atau direktif tersebut ditolak, dan kita dapat mengonfigurasi bagaimana API harus memberikan respons:

  • Mode publik: Berikan pesan kesalahan kepada pengguna, yang menjelaskan mengapa akses ditolak
  • Mode privat: Pesan kesalahan menunjukkan bahwa operasi, bidang, atau direktif tersebut tidak ada

Misalnya, dalam mode publik, kita mungkin mendapatkan respons ini:

{
  "errors": [
    {
      "message": "You must have role 'author' to access field 'title' for type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

Sedangkan dalam mode privat kita mungkin mendapatkan respons ini:

{
  "errors": [
    {
      "message": "There is no field 'title' on type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

Daftar aturan Kontrol Akses

Ekstensi ini menyediakan aturan Kontrol Akses berikut:

  • Nonaktifkan akses
  • Berikan akses hanya jika pengguna sudah masuk atau keluar
  • Berikan akses hanya jika pengguna memiliki suatu peran
  • Berikan akses hanya jika pengguna memiliki suatu kemampuan