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.