Membuat Role & Permission dengan Spatie Laravel

 


Hallo teman semua, saat ini banyak cara untuk membedakan level user pada aplikasi yang kita bangun menggunakan laravel, dan kali ini saya akan bahas salah satu package untuk membedakan level user atau role & permission pada laravel dengan package spatie, dengan memanfaatkan fitur role & permission, user tidak dapat melakukan tindakan diluar dari role atau permission yang dimilikinya.


Install Spatie Role & Permission

Karena kita menggunakan package, maka kita harus melakukan instalasi terlebih dahulu, ikuti langkah berikut :


Buka command prompt dan ketik perintah berikut lalu enter.


Setelah terinstall, langkah berikutnya adalah menerbitkan file migration dari package ini.


Dan kita kita akan mendapatkan file migrasi baru.


Selanjutnya jalankan migrationnya.


Setelah menjalankan migration, kita akan mendapat beberapa tabel baru, diantaranya model_has_permission, model_has_roles, permissions, roles, dan role_has_model.


Membuat Role & Permission

Sebelum memberi role & permission pada user, kita harus membuat role & permissionnya terlebih dahulu.


Buat seeder untuk mendefinisikan role apa saja yang tersedia pada projek kita nantinya.


Setelah membuat RoleSeeder dibuat, selanjutnya buat kode seperti berikut untuk role yang kita butuhkan, sebagai contoh saya membuat role admin dan user.


Selanjutnya buat seeder untuk mendefinisikan permission apa saja yang tersedia untuk project kita nantinya.


Setelah membuat PermissionSeeder, selanjutnya buat kode seperti berikut untuk permission yang kita butuhkan. Sebagai contoh saya membuat role home dan setting.


Selanjutya panggil seeder yang telah kita buat ke DatabaseSeeder, agar kita lebih mudah dalam melakukan seeding.


Selanjutnya kita jalankan seedernya.



Setelah melakukan seeding, maka tabel roles dan permissions akan terisi data sesuai yang kita buat.


Tabel roles.


Tabel permissions.


Memberikan Permissions pada Role

Disini saya  akan memberikan permission home dan setting pada role admin, dan hanya memberi permission home pada role user.


Pertama kita tambahkan dulu traits HasRoles ke model User.


Selanjutnya buka HomeController dan tambahkan kode berikut pada method index.


Jangan lupa juga untuk menambahkan kode berikut pada bagian atas.


Selanjutnya jalankan aplikasi laravel, dan lakukan login atau register user baru jika belum memiliki user.


Setelah melakukan login, maka tabel role_has_permission akan terisi sebagai berikut.

Note: Disini role dengan id 1 (admin) memiliki permission id 1 (home) dan 2 (setting), serta role id 2 (user) memiliki permission id 1 (home) sesuai  yang kita inginkan.


Setelah tabel role_has_permission terisi sesuai data yang kita inginkan, kita bisa hapus kembali kode yang kita tambahkan pada HomeController tadi menjadi seperti semula.


Sampai sini kita telah selesai melakukan setting roles dan permissionsnya, kita tinggal memberi role dan permissions ke user.


Memberi Role Admin Pada User

Selanjutnya kita akan membuat seorang user yang bertindak sebagai admin, kita akan membuat seeder agar lebih mudah.


Pertama buat UserSeeder.


Selanjutnya masukkan kode berikut pada UserSeeder.


Selanjutnya lakukan seeding dari UserSeeder.


Maka kita akan mendapatkan data baru pada tiga tabel yaitu tabel user, model_has_roles, dan model_has_permission.


Tabel user.


Tabel model_has_roles.


Tabel model_has_permission.


Memberi Role pada User baru

Setiap ada user yang baru melakukan registrasi, kita harus memberikan user tersebut role & permission, cara memberikan role & permission pada user yang baru melakukan registrasi sebagai berikut.


Pertama buka file RegisterController pada folder app\Http\Controllers\Auth dan pada method create, ubah menjadi seperti berikut:


Selanjutnya coba lakukan registrasi user baru, maka tabel user, model_has_roles, model_has_permission akan terisi dari user yang baru kita buat.


Tabel user.

Note: Disini telah ada data baru yaitu akun dengan nama user.


Tabel model_has_roles.

Note: Disini telah ada data baru yaitu model id 2 (user) mempunyai role id 2.


Tabel model_has_permission.

Note: Disini telah ada data baru, dimana model dengan id 2 (user) memiliki permission dengan id 1 (home).


Membuat Blade Template

Untuk melakukan pengecekan kita telah berhasil atau tidak, kita dapat memuat blade template dimana jika kita login menggunakan admin maka kita dapat mengakses home dan setting (sesuai dengan permission pada role admin) dan jika kita login menggunakan user maka kita hanya dapat mengakses home (sesuai dengan permission pada role user).


Pertama buka file app.blade.php pada folder resources/views/layouts dan right navbar tambahkan kode berikut.


Selanjutnya kita login menggunakan admin.


Note : Jika kita login sebagai admin maka pada pojok kanan atas akan muncul Home dan Setting, hal ini karena role admin memiliki permission Home dan Setting.


Selanjutnya coba login dengan user.

Note : Jika kita login menggunakan user, maka yang muncul Home karena role user hanya memiliki permission home.


Sampai sini proses membuat role dan permission telah selesai, jika teman-teman memiliki pertanyaan atau saran mengenai artikel ini, silahkan tinggalkan komentar pada form dibawah. Semoga artikel ini bermanfaat bagi pembacanya.


Terima Kasih...


By : Muhammad Agus Hermawan
Jombang Dev Software Developer

Belum ada Komentar untuk "Membuat Role & Permission dengan Spatie Laravel"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel