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
0 Komentar