Tags

, , , , ,

Insyaallah ini adalah bagian pertama dari tutorial tentang yii2-admin. Sudah lama sebenarnya pingin nulis tentang topik ini, sayangnya saya sendiri bukan penulis yang cakap :D. Lucunya, yii2-admin sudah dibuat translationnya dalam 15 bahasa, tapi bahasa indonesia sendiri belum ada.

Pengenalan RBAC (Role Base Access Control)

Sebelum menggunakan yii2-admin kita harus paham dulu konsep RBAC yang dipakai oleh Yii2. RBAC sendiri secara sederhana dapat diartikan dengan pemberian hak akses berdasarkan role. Lalu… Role itu sendiri apa? Kita bahas di bawah beserta istilah-istilah yang lain.

Role dan Permission

Role dimaksudkan sebagai kumpulan dari beberapa job secara umum. Secara logika, role seharusnya lebih mendeskripsikan tentang user itu sendiri alih-alih tentang jobnya. Contoh role misalnya adalah manager, karyawan, hrd, admin dan lain-lain. Dari nama role sendiri, kita belum bisa membayangkan deskripsi pekerjaannya. Untuk itu diperkenalkan istilah permission.
Secara fisikal, role dan permission adalah sama. Permission adalah kumpulan dari beberapa job juga. Hanya saja, jika role lebih mendeskripsikan usernya, maka permission lebih mendeskripsikan jobnya itu sendiri. Contoh permission misalnya, create_cuti, apparove_lembur, update_user dan lain-lain.

Yii2 RBAC

Route

Route sebenarnya bukan istilah original dalam RBAC. Route diperkenalkan di yii2-admin sebagai permission yang merepresentasikan controller action. Route dipakai dalam AccessControl filter untuk mengatur hak akses user pada suatu action.

Hirarki Role

Role dan permission dapat disusun secara bertingkat untuk mendapatkan pengaturan akses yang kompleks. Artinya, role dapat memiliki role lain sebagai anak dimana role anak tersebut dapat juga memiliki anak dan seterusnya. Contoh, role karyawan dapat memiliki permission create_cuti, create_lembur. Role manager dapat memiliki permission approve_cuti, approve_lembur. Pada saat yang sama, karena manager juga adalah karyawan, maka dia juga dapat memiliki role karyawan sebagai anaknya. Begitu juga create_cuti misalnya, bisa saja dia terkait dengan banyak action sekaligus yang semuanya harus didaftarkan sebagai bagian dari permission tersebut. Secara visual kira-kira seperti ini.

  • karyawan
    • create_cuti <-permission
    • create_lembur
  • manager
    • karyawan <-role
    • approve_cuti
    • approve_lembur
  • hrd
    • karyawan
    • proses_gaji
  • create_cuti
    • /cuti/index <-route
    • /cuti/create
    • /cuti/view

Rule

Ada role ada juga rule. Rule adalah aturan yang melekat pada wewenang yang ada. Misal, role manager punya akses untuk meng-aprove cuti karyawan. Tentunya tidak semua manager boleh meng-aprove cuti semua karyawan. Ada aturan yang berlaku misalnya, manager hanya boleh meng-aprove cuti karyawan yang ada di unit kerjanya. Dia juga tidak diperkenankan untuk mengaprove cutinya sendiri.
Di Yii2, rule direpresentasikan dalam kode PHP (berupa class) yang akan dievaluasi ketika melakuakn cek akses terhadap role. Rule dibuat dengan meng-extends class yii\rbac\Rule.

Assignment User

Setelah struktur role dan permission terbentuk. Berikutnya adalah memberikan role tersebut kepada user sesuai dengan kapasitasnya. Manager mendapat role manager, karyawan dapat karyawan, karyawan di unit SDM dapat role hrd dan seterusnya. Sebagai catatan, satu user dapat memiliki beberapa role atau permission sekaligus.

Instalasi yii2-admin

Berikutnya adalah instalasi yii2-admin dan konfigurasinya. Kita lanjut lagi kapan-kapan, Insyaallah 😀

Advertisements