Permission (RBAC) di Skalfa API
Skalfa API 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 Skalfa API 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), Skalfa API 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.