Aplikasi Sistem Role Management dengan Laravel

Aplikasi ini dibuat untuk mendukung aplikasi lain yang telah berjalan. Aplikasi lain dengan kompleks seperti ERP tanpa ada pembatasan user dan role. Saat itu, aplikasi yang lama masih menggunakan session username untuk membatasi tiap proses. Ketika ada user baru dan role baru, aplikasi ini perlu ada coding ulang untuk mendefinisikan user dan role baru tersebut.

Atas alasan itu, aplikasi sistem role management ini dibuat. Mulai dari User memiliki lebih dari satu Role. Lalu Role tersebutlah untuk membatasi akses menu ataupun proses/link dari aplikasi yang lama.

Konsep sederhananya adalah 1 User memiliki lebih dari 1 Role dan setiap role yang ada memiliki akses terhadap banyak Menu dan setiap Role pula memilik akses terhadap permission/link/proses yang lebih dari satu.

Dari sisi Menu, terdapat aturan, 1 Menu mempunyai lebih dari 1 anak menu (menu child). Sedangkan setiap Permission menempel pada 1 Menu.

Setelah jadi, saya buatkan API sederhana untuk mengakses misalnya:
1. User tertentu dengan Role tertentu hanya bisa mengakses menu A,B,dan C
2. User tertentu dengan Role tertentu pula hanya memiliki akses permission dari satu link proses.

Handle yang dilakukan adalah, kita harus cegah juga user yang mengetahui link dari satu menu. Saya contohkan ketika ada user Adiputra sebagai Role employee, ketika ingin melihat list gaji dari semua karyawan tentu tidak boleh. Tetapi, karena adiputra mengetahui link untuk mengakses menu tersebut, Adiputra bisa saja akses tersebut. Namun pada sistem ini, akses langsung via URL/link pun kita handle.

Handle yang lain dilakukan adalah menghilangkan secara otomatis link permission. Saya sempat membuat artikel bagaimana memanfaatkan Service Injection pada Laravel. Dengan teknik seperti inilah saya buat bagaimana ketika user membuka satu halaman / satu menu, permission yang ada pada menu tersebut hilang atau muncul sesuai dengan role yang user miliki. Kasus disini kita handle tentu dengan PHP, berbeda dengan kita handle dengan Javascript.

Aplikasi sistem role management ini dibuat dengan Laravel Framework 5.2.x, ada Entrust juga untuk membantu mendefinisikan permission.

Tampilan masih sederhana berikut adalah tampilan bukan API nya.

menu role management system
menu role management system

master role
master role

user role
user role

User yang memiliki banyak role. Disini terlihat listnya sederhana.


master menu
master menu

menu role
menu role

master permission
master permission

role permission
role permission

List dari permission yang menempel pada Role.


create new permission
create new permission

Create new permission disini, menempel juga permission ini ada di menu apa sih? nah disinilah gunanya permission nempel di menu.


assign role to permisison
assign role to permisison

Berikut gambar diatas adalah cara sederhana menambahkan permission pada role tertentu. Jika memilik permission, maka permission akan muncul, sebaliknya jika tidak memiliki permission maka permission tidak akan muncul. Pilih dahulu menu, lalu otomatis permission yang menempel di Menu tersebut akan muncul. Tinggal di check saja jika ingin di assign.


assign user to role
assign user to role

Gambar diatas adalah meng-assign user ke role tertentu. 1 User bisa banyak Role. Saat penambahan ini masih satu satu.


assign role to menu
assign role to menu

Gambar diatas adalah meng-assign role ke menu yang ada. Jika role tertentu mendapatkan akses maka akan muncul menu tersebut. Jika tidak di-assign, maka menu otomatis tidak akan muncul.

4 comments

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: