Belajar Kode Program

Blog belajar menulis kode program dan aplikasi komputer

Sabtu, 05 Agustus 2017

Fitur RBAC Manager pada Yii2 dengan Modul Yii2-Admin

RBAC singkatan dari Role Based Access Control yang secara harfiah berarti kendali akses berdasar peranan pengguna. Hal ini berarti bahwa pengguna dengan peranan tertentu, misalnya administrator, editor, kontributor, atau bahkan komentator memiliki akses yang berbeda-beda. Misalnya administrator bisa menghapus tulisan seorang kontributor, tetapi kontributor tidak dapat melakukannya. Kita akan mencoba belajar menerapkan RBAC pada framework Yii. Bagaimanapun juga, konsep RBAC ini hampir selalu digunakan pada aplikasi-aplikasi web dengan jumlah pengguna yang banyak.


Salah satu ekstensi untuk RBAC pada Yii adalah yii2-admin buatan anak negeri bertalenta, Sdr. Misbahul D. Munir. Mari kita mulai dengan asumsi bahwa Anda sudah berhasil menginstal framework Yii. Pada kasus ini, kami menggunakan template intermediate hasil modifikasi.

Untuk menginstalnya, gunakan composer dengan perintah berikut:
composer require mdmsoft/yii2-admin "~2.0"


Selanjutnya, kita lakukan konfigurasi. Pada template yang saya gunakan, file konfigurasi adalah config/web.php.



Setelah ini, kita dapat mengelola RBAC melalui url http://localhost/?r=admin.



Selanjutnya coba perhatikan daftar menu yang disediakan di bagian atas. Ada beberapa istilah baru yang perlu Anda ketahui, yaitu assignment, role, permission, dan rule. Kalau user (pengguna) dan route (rute) tentu Anda sudah tahu. Assignment (penugasan) berarti pemberian role dan atau permission kepada user tertentu. Role (peranan) berarti jenis peranan dalam sistem kita, seperti administrator, author, dan sebagainya. Role ini selanjutnya dapat diatur cakupannya, dalam jenis rute, permission, atau bahkan role lainnya. Permission (perizinan) memiliki kemiripan dengan role, hanya saja perizinan ini terkait dengan kemampuan melakukan sesuatu. Dikatakan mirip dengan role karena permission juga berisi rute-rute mana saja yang dapat diakses, tetapi tidak dapat diisi dengan permission atau role yang lain. Adapun rule (aturan) adalah kelas yang dibuat untuk mengatur akses lebih teknis, seperti misalnya seorang pengguna hanya dapat meng-update data yang dibuat dirinya, bukan dibuat oleh pengguna lainnya.

Khusus pada pembelajaran kita kali ini, kita menggunakan komponen authManager dengan class PhpManager. Oleh karena itu, pastikan bahwa Anda sudah membuat folder rbac pada direktori dasar karena class PhpManager menggunakan file php untuk menyimpan informasi rbac. Beda jika kita menggunakan kelas DbManager di mana kita harus membuat beberapa tabel di database.

Dengan memahami istilah-istilah tersebut secara sederhana, urutan-urutan yang perlu kita lakukan adalah sebagai berikut:

1. Route mana saja yang akan dikelola


2. Definisikan role

3. Lanjutkan dengan memberikan routes, permission, atau roles lainnya ke role yang sudah dibuat



4. Permission, untuk yang ini sifatnya opsional.

Permission biasanya digunakan untuk mengumpulkan beberapa rute yang biasanya sangat dekat hubungannya.


5. Assignment

Pada menu assignment ini, kita akan memberikan kepada pengguna tertentu beberapa roles dan atau permission tertentu.


6. Pembuatan Rules, bila perlu

Rules berarti aturan. Kita memerlukannya pada kasus misalnya pada route update artikel, hanya pengguna yang membuat artikel-lah yang berhak melakukanya. Sementara bagi yang bukan pembuat artikel tidak dapat melakukan update terhadap artikel tersebut. Rules cocok untuk suatu permission. Sebagai contoh, kita membuat permission 'Update Surat' yang menggunakan aturan (rule) tertentu. Mari kita buat terlebih dahulu rule, sebagai contoh berilah nama Operator.


Perhatikan kolom Class Name di atas. Kita harus membuat sebuah kelas yang mengeksten ke kelas yii\rbac\Rule. Saya menaruhnya di folder rbac.



Selanjutnya, kita tautkan rule yang sudah kita buat pada suatu permission.



Setelah ini, tinggal lakukan assignment untuk role tertentu dengan permission yang baru saja kita buat.

Untuk sementara sampai di sini dulu, mengenai penggunaan kelas DbManager sebagai AuthManager-nya insyaallah akan kita bahas di lain kesempatan.

Semoga bermanfaat, jika ada yang kurang jelas, mari kita diskusikan bersama.


Referensi:
  • http://www.yiiframework.com/doc-2.0/guide-security-authorization.html
  • https://github.com/mdmsoft/yii2-admin

2 komentar: