Laravel 7 - Install Roles & Permission management with laravel permission Spatie | Part 1

Muhammad Rifki Adam A
3 min readJun 29, 2021

--

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

php artisan vendor:publish --provider=”Spatie\Permission\PermissionServiceProvider”

  • Kemudian buat dan setup databasenya terlebih dahulu pada file .env
setting pada file .env
  • Setelah melakukan proses instalasi. Untuk menggunakan package Laravel Permission ini kita tambahkan dulu trait HasRoles ke model User

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

create file seeder Role and User

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;

Auth/RegisterController
  • Setelah itu jalankan server laravel dengan

php artisan serve

  • Selesai

Terima kasih !

--

--

Muhammad Rifki Adam A
Muhammad Rifki Adam A

Written by Muhammad Rifki Adam A

I'm From Yogyakarta, Indonesia and I Interested in software interface development and web development

No responses yet