Home Web Laravel Laravel Authorization

Laravel Authorization

0

Seperti yang kita semua tahu, framework Laravel menyediakan fitur yang memudahkan developer untuk menambah kemampuan baru di project laravelnya dan salah satunya adalah untuk menyediakan fitur otorisasi pada aksi di web kita.

Otorisasi

Singkatnya, otorisasi adalah pemberian hak, kemampuan, atau aksi kepada suatu m. Hal yang diberi bisa berupa banyak hal, seperti kemampuan untuk masuk ke suatu route, hak untuk melihat sebuah elemen, atau aksi untuk membuat data baru pada database.

Otorisasi pada Laravel

Seperti yang disinggung diatas, laravel menyediakan kebutuhan dasar yang memudahkan developer untuk mengubah atau menambahkan fitur dalam hal ini otorisasi.

Laravel menyediakan asset dari Facades dan bernama Gate, seperti namanya, gate berguna layaknya gerbang yang memperbolehkan orang-orang yang sudah ter-otorisasi masuk atau tidak.

Untuk membuat method gate baru, buka file AppServiceProvider.php dan pergi ke method boot. dan tambahkan kode dibawah:

Gate::define('admin', function (User $user) {
     return $user->email === '[email protected]';
 });

Kode diatas berfungsi untuk membuat definisi baru bernama admin dan definisi tersebut berfungsi untuk mengecek apakah email dari user yang sedang login adalah ‘[email protected]’ atau bukan. Jika sesuai, maka user dibolehkan untuk melanjuti requestnya seperti berpindah halaman atau melakukan aksi lain. Tetapi jika tidak sesuai, user akan dinavigasikan ke halaman yang menjelaskan kalau user tidak ter-otorisasi dan tidak bisa pergi atau melakukan aksi tertentu.

Kita bisa menggunakan definisi gate diatas di 2 tempat yaitu route dan view, Untuk penggunaan di route, bisa dilihat di kode bawah:

Route::middleware('can:admin')->group(function () {
    Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
    Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
    Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});

Menggunakan middleware can dan memanggil definisi gate yang baru kita buat memungkinkan untuk membiarkan user dengan ketentuan yang didefinisikan di gate untuk melanjutkan requestnya.

Lalu untuk penggunaan otorisasi gate di view, kita bisa gunakan kode seperti dibawah:

@can('admin')
    <x-dropdown-link :href="route('profile.edit')">
        {{ __('Profile') }}
    </x-dropdown-link>
@endcan

Kode diatas menggunakan @can blade dirrective yang berungsi mirip-mirip dengan middleware can yaitu memanggil definisi gate menjadi parameter utama dan kode diantara directive pembuka dan penutup adalah yang tampil atau tidak tampil sesuai dengan ketentuan gate.

Selesai sudah artikel ini, semoga bisa bermanfaat 🙂

Terimakasih!!!