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
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
Penerapan Middleware jika anda menggunakan seperti ini di routeMiddleware
:
'role' => \Laratrust\Middleware\LaratrustRole::class, 'permission' => \Laratrust\Middleware\LaratrustPermission::class, 'ability' => \Laratrust\Middleware\LaratrustAbility::class,
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']); });