Membuat Multi Level User Dengan Spatie Laravel
Membuat Multi Level User Dengan Spatie Laravel
A. INSTALASI
1. Instal project Laravel dengan perintah :
6. Ketikkan di URL browser anda : localhost:8000, maka anda akan mendapatkan tampilan seperti berikut ini
Jika di browser anda muncul tampilan seperti ini, berarti Laravel telah berhasil terinstal.
7. Buka file .env yang ada di folder project kita, lakukan setingan untuk database seperti dibawah ini :
setelah menjalankan perintah diatas, maka akan muncul menu LOGIN dan REGISTER, itu berarti authentication
telah berhasil di install
10. Setelah itu, download library spatie/laravel dengan menggunakan composer. Perintahnya adalah sebagai
berikut:
composer require spatie/laravel-permission
11. Tunggu hingga instalasi selesai. setelah itu, akan muncul tampilan seperti berikut ini:
12. Selanjutnya, kita harus mendownload file migration dari spatie itu sendiri. Perintahnya sebagai berikut:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
13. Selanjutnya, jalankan perintah migrate agar kita mendapatkan struktur table yang kita butuhkan.
php artisan migrate
14. Setelah perintah menjalankan perintah diatas, kita akan memiliki table seperti dibawah ini
15. Selanjutnya, tambahkan Trait HasRole di model User, caranya sebagai berikut:
- Buka file app\User.php
- Tambahkan trait HasRoles pada model user tersebut
16. Dengan demikian, kita sudah dapat menggunakan Laravel permission untuk membuat role/level user,
permission, dsb.
B. PENGGUNAAN
1. Pembuatan Role/Level.
Untuk membuat role/level user, kita dapat menjalankan perintah berikut ini pada CLI/Terminal:
php artisan permission:create-role nama-role
pada contoh ini kita akan membuat 2 role/level yaitu admin dan tamu.
Berikut ini adalah perintahnya :
o Setelah melakukan registrasi, kita akan otomatis login ke dalam aplikasi kita
o Kita akan jadikan user ‘Eko’ Sebagai admin. Pada contoh ini kita buat satu controller yang dapat
melakukan ‘assign role’ kepada user. Controller yang akan kita buat adalah RoleController.
o Buka file app\Controller\RoleController.php, kemudian tambahkan skrip berikut ini :
Keterangan :
auth()->user() adalah method untuk mendapatkan data user yang login saat ini.
Method user()->assignRole(‘admin’) digunakan untuk memberikan level admin kepada user
yang sedang login saat ini.
o Selanjutnya, kita buat route yang akan mengakses controller RoleController ini. Buka file
routes\web.php
Jika muncul tampilan seperti diatas, itu berarti kita sudah berhasil memberikan role ‘admin’ kepada
user ‘Eko’.
Untuk membuktikannya, silakan buka PHPMyAdmin.
Nilai 1 pada field role_id adalah role admin, sedangkan nilai 1 pada model_id adalah user ‘Eko’.
o Dengan demikian, user ‘Eko’ telah mendapatkan role sebagai admin.
3. Menggunakan directive blade
Spatie/Laravel-permission menyediakan blade directive yang dapat kita gunakan pada template blade kita.
Contoh : kita akan menambah menu pada tampilan home yang hanya akan muncul pada role admin.
Silakan buka file resources\views\layouts\app.blade.php dan tambahkan baris seperti dibawah ini.
o Dengan demikian, pada tampilah home, kita akan mendapatkan menu Tambah User. Silakan buka
localhost:xxxx/home pada web browser.
o Karena menu Tambah User tersebut hanya ada pada role ‘admin’, dalam hal ini user ‘Eko’, maka
ketika kita melakukan login dengan user lain yang bukan role ‘admin’, maka menu tersebut tidak
akan muncul
o route /tes-role ini hanya bisa diakses oleh role admin, dalam hal ini user ‘Eko’. Jika route /tes-role
ini coba diakses oleh user yang bukan admin, maka akan muncul pesan kesalahan.
###