Advertisement

Responsive Advertisement

Cara bikin Role dan Permission Laravel dengan Spatie-Permission

Assalamualaikum.. Teman-teman untuk dapat membedakan Level setiap User tentu kita membutuhkan package untuk mempermudah membuat dan menggunakannya. karena jika kita bikin manual, PASTI sangat lama. dan aku pernah menikmati itu semua di CI3 dan Laravel. 
Tujuanku sih biar aku bisa paham basic usage Role dan Permission.

Apa sih Role dan Permission itu?

Role itu untuk membedakan Level User. contoh Role : admin, super admin, siswa, guru, author, editor dll

Permission itu hak akses nya : contoh permission : edit post, create post, delete post.

jadi untuk membatasi si Role itu bisa apa kita menggunakan permission sbg perizinan nya.

Lanjut cara memakai dan menggunakan :


Step 1 (Install)

baca dokumentasinya disini Spatie Permission - Laravel

Step 2 (Cara membuat Role dan Permission)

php artisan permission:create-role "santri"

php artisan permission:create-role "admin"

contoh membuat role sekaligus permissionnya :

php artisan permission:create-role admin web "create post"

admin : nama role

web : jenis permission (selain itu bisa untuk api)

create post : permission nya

Step 3 (pakai dulu trait di Model nya)

contoh pada model Models/user.php

tambahi use HasRoles di dalam Class User

Step 4 (cara memberikan izin nya)

cara memberikan Role

$user = User::find(2);

$user ->assignRole('admin');

$user ->assignRole('super admin');

cara memberikan permission

$role = Role::find(2);

$role->givePermissionTo('create user', 'edit user');

Step 5 (cara pakai di view)

@can('edit user')

        <disini contoh button>

@endcan


maka di hanya akan bisa di gunakan yang memiliki permission edit user aja.

selain itu ia tidak akan tampil

Step 5 (cara pakai di middleware)

Tambahi dlu diapp/Http/Kernel.php file.

protected $routeMiddleware = [
    // ...
    'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
    'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
    'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
];

Kemudia gunakan di Route dengan cara seperti ini :

Route::group(['middleware' => ['role:super-admin']], function () {
    //
});

Route::group(['middleware' => ['permission:publish articles']], function () {
    //
});

Route::group(['middleware' => ['role:super-admin','permission:publish articles']], function () {
    //
});

Route::group(['middleware' => ['role_or_permission:super-admin|edit articles']], function () {
    //
});

Route::group(['middleware' => ['role_or_permission:publish articles']], function () {
    //
});

atau alternatif lain bisa menggunakan tanda ini |

Route::group(['middleware' => ['role:super-admin|writer']], function () {
    //
});

Route::group(['middleware' => ['permission:publish articles|edit articles']], function () {
    //
});

Route::group(['middleware' => ['role_or_permission:super-admin|edit articles']], function () {
    //
});

atau kamu bisa langsung gunain semuanya dengan menerapkannya di constructor

public function __construct()
{
    $this->middleware(['role:super-admin','permission:publish articles|edit articles']);
}
public function __construct()
{
    $this->middleware(['role_or_permission:super-admin|edit articles']);
}


yaaa.. itu pilihanmu. selamat ! waktu mu tidak terbuang percuma dg spatie








Posting Komentar

0 Komentar