Buatin Website Blog

Mengotorisasi Aksi Pengguna Menggunakan Blade Directive @can di Laravel

Published 1 year ago Comment
Mengotorisasi Aksi Pengguna Menggunakan Blade Directive @can di Laravel

Laravel merupakan salah satu framework PHP yang paling populer dan digunakan oleh banyak developer. Dalam pengembangan aplikasi, seringkali kita ingin membatasi akses pengguna ke beberapa fitur atau halaman tertentu. Laravel menyediakan fitur bernama Policies untuk membatasi akses pengguna, dan Blade Directive @can untuk membuat pembatasan akses tersebut menjadi lebih mudah dan efisien.

Apa itu Policies?

Policies adalah sebuah class yang digunakan untuk membatasi akses pengguna ke beberapa fitur atau halaman dalam aplikasi. Class ini dapat dipanggil pada Blade Directive @can untuk membuat pembatasan akses lebih mudah. Contohnya, kita ingin membatasi akses pengguna untuk mengakses halaman edit order, maka kita bisa membuat sebuah Policy untuk halaman tersebut. Policy ini akan mengecek apakah pengguna yang sedang login memiliki izin untuk mengakses halaman tersebut atau tidak.

Berikut adalah cara membuat Policy dan menggunakan Blade Directive @can:

  1. Membuat Policy
php artisan make:policy OrderPolicy

Perintah di atas akan membuat sebuah file bernama OrderPolicy.php pada direktori app/Policies. File ini akan berisi method-method yang digunakan untuk membatasi akses pengguna.

  1. Membuat method pada Policy
public function update(User $user, Order $order)
{
    return $user->id === $order->user_id;
}

Parameter pertama pada method adalah model User yang merepresentasikan pengguna yang sedang login. Parameter kedua adalah model Order yang merepresentasikan order yang akan di edit.

Method di atas akan mengecek apakah pengguna yang sedang login memiliki izin untuk mengakses halaman edit order atau tidak. Method ini akan mengembalikan nilai true jika pengguna yang sedang login memiliki izin untuk mengakses halaman tersebut, dan false jika tidak.

  1. Tambahkan Policy baru ke dalam App\Providers\AuthServiceProvider.php
protected $policies = [
    Order::class => OrderPolicy::class,
];

Policy baru yang kita buat perlu didaftarkan ke dalam AuthServiceProvider agar dapat di akses ketika kita memanggil Blade Directive @can.

  1. Gunakan Blade Directive @can pada view
@can('update', $order)
    <a href="{{ route('order.edit', $order->id) }}">Edit</a>
@endcan

Pada contoh di atas, kita menggunakan Blade Directive @can untuk mengecek apakah pengguna yang sedang login memiliki izin untuk mengakses halaman edit order atau tidak. Jika pengguna memiliki izin, maka akan ditampilkan link untuk mengakses halaman edit order.

Tambahan: Memberi Batasan Akses dari Backend

Untuk memberi batasan akses dari, ada beberapa cara yang dapat kita lakukan:

Pembatasan akses melalui salah satu cara diatas perlu dilakukan agar pengguna tidak dapat mengakses halaman edit order dengan cara mengubah URL secara manual. Jika pengguna tidak memiliki izin untuk mengakses halaman tersebut, maka akan muncul halaman 403 Forbidden.

Penutup

Policies dan Blade Directive @can sangat berguna untuk membatasi akses pengguna ke beberapa fitur atau halaman tertentu. Dengan menggunakan Policies dan Blade Directive @can, kita dapat membuat pembatasan akses menjadi lebih mudah dan efisien.

Referensi