Laravel 7 - Install Roles & Permission management with laravel permission Spatie | Part 1
Disini kita akan belajar mengenai konsep roles & permission menggunakan Package Spatie. Langsung saja kita akan install terlebih dahulu untuk project laravelnya.
Disini saya mencoba install menggunakan laravel versi 7
composer create-project --prefer-dist laravel/laravel:^7.0 name_project
Setelah proses installasi selesai, arahkan kedalam path file proyeknya dan kemudian kita akan menginstall role & permissionnya menggunakan package Laravel Spatie berikut ini:
- Pertama-tama kita akan menginstall package tersebut menggunakan composer
composer require spatie/laravel-permission
- Setelah itu kita harus mempublikasikan pada migrasi dan
config/permission.php
file konfigurasi dengan:
php artisan vendor:publish --provider=”Spatie\Permission\PermissionServiceProvider”
- Kemudian buat dan setup databasenya terlebih dahulu pada file .env
- Setelah melakukan proses instalasi. Untuk menggunakan package Laravel Permission ini kita tambahkan dulu trait
HasRoles
ke modelUser
use Spatie\Permission\Traits\HasRoles; -> tambahkan diatas class User
use HasRoles; -> tambahkan didalam class User
- Jalankan migrate untuk membuat field tabel pada database dengan perintah :
php artisan migrate
- Membuat data dummy User ke dalam database menggunakan Seeder dengan perintah :
php artisan make:seeder RoleSeeder
php artisan make:seeder UserSeeder
Pada file RoleSeeder tambahkan kode berikut :
use Spatie\Permission\Models\Role; -> paste dibagian atas class
Pada public function run() tambahkan kode :
Role::create([ ‘name’=> ‘super admin’, ‘guard_name’=>’web’ ]);
Role::create([ ‘name’=> ‘admin’, ‘guard_name’=>’web’ ]);
Role::create([ ‘name’=> ‘user’, ‘guard_name’=>’web’ ]);
Pada file UserSeeder tambahkan kode berikut :
use App\User; -> taruh dibagian atas class
Pada public function run() tambahkan kode :
$superadmin = User::create([
‘name’ =>’Super Admin Role’,
‘email’ =>’superadmin@role.test’,
‘password’ =>bcrypt(‘12345678’)
]);
$superadmin->assignRole(‘superadmin’);
$admin = User::create([
‘name’ =>’Admin Role’,
‘email’ =>’admin@role.test’,
‘password’ =>bcrypt(‘12345678’)
]);
$admin->assignRole(‘admin’);
$user = User::create([
‘name’ =>’User Role’,
‘email’ =>’user@role.test’,
‘password’ =>bcrypt(‘12345678’)
]);
$user->assignRole(‘user’);
- Kemudian tambahkan juga pada file DatabaseSeeder didalam function run():
$this->call(RoleSeeder::class);
$this->call(UserSeeder::class);
- Setelah itu jalankan perintah :
php artisan db:seed
- Kemudian install Laravel/ui
composer require laravel/ui “^2.0”
- Jalankan laravel ui
php artisan ui --auth bootstrap
- Jalankan npm untuk proses fresh scaffolding
npm install && npm run dev
- Pada file Controller Auth/RegisterController ubah kode pada function create () menjadi seperti ini :
$user = User::create([
‘name’ => $data[‘name’],
‘email’ => $data[‘email’],
‘password’ => Hash::make($data[‘password’]),
]);
$user->assignRole(‘user’);
return $user;
- Setelah itu jalankan server laravel dengan
php artisan serve
- Selesai
Terima kasih !