Skip to content

Gates are simply closures that determine if a user is authorized to perform a given action.

Notifications You must be signed in to change notification settings

LQL-ID/gate-authorization

Repository files navigation

Gate Authorization

Apa itu Gates ?

Gates hanyalah penutupan yang menentukan apakah pengguna diizinkan untuk melakukan tindakan tertentu. Sederhananya Gates adalah sebuah Facade Class yang disediakan Laravel untuk melakukan sebuah Otorisasi. Laravel Gates

Bagaimana Cara Menggunakan Gates ?

Buatlah sebuah Provider Class, In case Saya menamainya AuthorizationServiceProvider.

php artisan make:provider NamaFileClassServiceProvider

Berikut adalah penampakannya sebelum terjadi modifikasi.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AuthorizationServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot(): void
    {
        //
    }
}

Lakukan Perubahan Terhadap Fungsi "Boot"

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot(): void
    {
        collect(['admin', 'manager', 'user'])->each(function ($role) {
            Gate::define($role, function (User $user) use ($role) {
                return $user->roles == $role;
            });
        });
    }

Sebagai Contoh Menggunakan Class Model Users dan Wajib Menggunakan Facade Class Gate

use App\Models\User;
use Illuminate\Support\Facades\Gate;

Setelah membuat definisi Gates/Gerbang untuk setiap Roles/Peran, Kita Dapat Menggunakan Alias daripada Middleware bawaan Laravel yaitu Autorize::class, Sebagai Contoh Saya Menggunakannya di routes/web.php

Route::group(['prefix' => '/dashboard', 'as' => 'dashboard.', 'middleware' => ['auth']], function () {
    Route::get('/welcome', [DashboardController::class, 'displayWelcomingPage'])->name('welcome');
    Route::get('/user-data', [DashboardController::class, 'displayUserDataPage'])->middleware('can:admin')->name('user-data');
    Route::get('/user-roles', [DashboardController::class, 'displayUserGroupByRolesPage'])->middleware('can:manager')->name('user-roles');
    Route::get('/count-user-roles', [DashboardController::class, 'displayCountUserRolesPage'])->middleware('can:user')->name('count-user-roles');
});

Credits

About

Gates are simply closures that determine if a user is authorized to perform a given action.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published