Permission (RBAC) di Elysia-Light

Elysia-Light menyediakan utility permission berbasis feature dan access key untuk mengatur otorisasi secara eksplisit. Pendekatan ini ringan, mudah dibaca, dan fleksibel untuk kebutuhan API skala kecil hingga infra-grade backend.

Konsep Dasar Permission

Permission di Elysia-Light dibangun menggunakan dua level utama: Feature dan Access. Feature merepresentasikan modul atau domain besar, sedangkan Access merepresentasikan aksi spesifik di dalam feature tersebut.

Struktur Key Permission

  • Feature Key — 3 digit angka (contoh: 100, 200)
  • Access Key — 2 digit angka (contoh: 01, 02)
  • Permission Key — Gabungan feature.access (contoh: 100.01)

Mendaftarkan Permission

Permission didefinisikan menggunakan permission.register. Setiap feature dapat memiliki beberapa akses dengan nama yang deskriptif.
Kode berhasil di copy!
5

Menggunakan Permission di Controller

Permission digunakan langsung di controller untuk membatasi akses endpoint. Jika permission tidak dimiliki user, request akan dihentikan dengan response 403.
Kode berhasil di copy!
5

Permission dengan Feature Default

Jika hanya menuliskan access key (tanpa feature), Elysia-Light akan otomatis menggunakan feature default dari permission yang didaftarkan.
Kode berhasil di copy!
5

Menggabungkan Permission (OR)

Beberapa permission dapat digabung menggunakan orHave. Guard akan lolos jika salah satu permission dimiliki user.
Kode berhasil di copy!
5

Permission di ControllerContext

Daftar permission user tersedia di c.permissions. Data ini biasanya diisi oleh middleware auth setelah verifikasi token.
Kode berhasil di copy!
5

Mengambil Daftar Feature dan Access

Utility permission menyediakan helper untuk mengambil daftar feature dan akses dalam bentuk terstruktur. Umumnya digunakan untuk kebutuhan UI atau manajemen role.
Kode berhasil di copy!
5

Best Practice

Gunakan permission sebagai guard di controller, bukan di route. Jaga key permission tetap konsisten dan stabil. Hindari mengubah key karena akan berdampak ke data role yang sudah ada.