Iman Sugirman

Menggunakan Laratrust Untuk Role Akses di Laravel

23 Februari 2022

Laratrust adalah Sebuah package yang dipadukan dengan Laravel dan terasa harmoni ketika digunakan untuk web aplikasi yang sangat banyak menggunakan otentikasi dan otorisasi, biasanya ini digunakan untuk aplikasi besar dalam pengembangan software-software yang banyak aturan-aturan dari mulai pembuat, approval, penerima, pengedit dan lainnya. Sepertinya semua software memang harus menggunakan ini, karna pastinya akan banyak sekali kemungkinan-kemungkinan tidak kita prediksi didepan, nah kali ini kita akan mencoba Menginstall dan menggunakan Package Laratrust ini :

Pertama install terlebih dahulu

composer require santigarcor/laratrust

Lalu Publish package laratrust

php artisan vendor:publish --tag="laratrust"

Jangan lupa untuk Clear Cache terlebih dahulu :

php artisan config:clear

Lalu sekarang kita setup untuk Laratrust Package dengan memasukan perintah :

php artisan laratrust:setup

Dengan otomatis model Role dan Permission akan dibuat oleh Laratrust

Biasanya setelah melakukan setup harus kembali di autoload lagi composernya, dan kita harus memasukan perintah :

composer dump-autoload

sekarang silahkan migrate database :

php artisan migrate

Menggunakan Laratrust Role

Jika anda ingin membuat role / jabatan seseorang di sistem maka baiknya dibuat dan disimpan di database

Berikut contoh membuat role di Controller :

$owner = Role::create([ // contoh ketika ingin membuat role yang namanya owner 'name' => 'owner', 'display_name' => 'Project Owner', // optional 'description' => 'User is the owner of a given project', // optional ]);

Dan berikut membuat permission dicontroller :

$owner = Permission::create([ // contoh ketika ingin membuat role yang namanya owner 'name' => 'create_project', 'display_name' => 'Create Project', // optional 'description' => 'Create Project description', // optional ]);

Dan ketika user itu akan dikaitkan dengan mendelegasikannya menjadi role owner bisa seperti ini :

$user = User::find(1); $user->attachRole($owner);

Dengan mengaitkan user sebagai owner maka sudah terotomasi akan memberikan permission create_project

Middleware

Penerapan Middleware jika anda menggunakan seperti ini di routeMiddleware :

'role' => \Laratrust\Middleware\LaratrustRole::class, 'permission' => \Laratrust\Middleware\LaratrustPermission::class, 'ability' => \Laratrust\Middleware\LaratrustAbility::class,

Implementasi Controller Dalam Pencegahan

Untuk Implementasi di controller laravel bisa menggunakan dengan :

$users = User::whereRoleIs('admin')->get();

Jika anda ingin membuat pencegahan di route bisa dengan cara

Route::group(['prefix' => 'admin', 'middleware' => ['role:owner']], function() { Route::get('/', 'AdminController@welcome'); Route::get('/manage', ['middleware' => ['permission:manage-admins'], 'uses' => 'AdminController@manageAdmins']); });