Pengenalan Authorization


Authorization dalam Laravel adalah proses yang menentukan apakah pengguna memiliki hak akses untuk melakukan tindakan tertentu. Di Laravel, authorization dapat dikelola dengan cara yang mudah dan terstruktur, menggunakan Gates dan Policies.

1. Apa itu Authorization?

Authorization adalah proses yang dilakukan setelah autentikasi untuk memastikan bahwa pengguna yang sudah terautentikasi memiliki izin untuk melakukan tindakan tertentu, seperti mengedit atau menghapus resource.

2. Gates dan Policies

Gates

Gates adalah cara sederhana untuk menentukan apakah pengguna dapat melakukan tindakan tertentu. Biasanya, Gates digunakan untuk mengecek hak akses di tempat yang lebih umum.

Contoh Implementasi Gates

  1. Definisi Gate
    Anda dapat mendefinisikan Gate dalam AuthServiceProvider.php:

    use Illuminate\Support\Facades\Gate;
    
    public function boot()
    {
       $this->registerPolicies();
    
       Gate::define('update-post', function ($user, $post) {
           return $user->id === $post->user_id;
       });
    }
  2. Menggunakan Gate

    Anda dapat mengecek Gate dalam controller atau middleware:

    if (Gate::allows('update-post', $post)) {
       // User dapat memperbarui pos
    }
    
    if (Gate::denies('update-post', $post)) {
       // User tidak memiliki izin untuk memperbarui pos
    }

Policies

Policies adalah class yang mengelompokkan logika authorization untuk model tertentu. Mereka sangat berguna ketika Anda memiliki banyak akses kontrol untuk satu model.

Contoh Implementasi Policies

  1. Membuat Policy

    Anda dapat menghasilkan policy menggunakan Artisan:

    php artisan make:policy PostPolicy
  2. Definisi Policy
    Dalam file policy yang baru dibuat, Anda dapat mendefinisikan metode:

    public function update(User $user, Post $post)
    {
       return $user->id === $post->user_id;
    }
  3. Mendaftarkan Policy

    Anda harus mendaftarkan policy dalam AuthServiceProvider.php:

    protected $policies = [
       Post::class => PostPolicy::class,
    ];
  4. Menggunakan Policy

    Anda dapat mengecek policy seperti berikut:

    if ($user->can('update', $post)) {
       // User dapat memperbarui pos
    }

3. Menggunakan Middleware untuk Authorization

Anda juga dapat menggunakan middleware untuk mengecek authorization sebelum mengakses route.

Route::put('/posts/{post}', 'PostController@update')->middleware('can:update,post');

Kesimpulan

Authorization di Laravel memungkinkan Anda untuk dengan mudah mendefinisikan dan mengevaluasi izin pengguna untuk melakukan tindakan pada aplikasi Anda. Dengan menggunakan Gates dan Policies, Anda dapat menjaga kode Anda terstruktur dan mudah dikelola.
Dokumentasi Resmi Laravel tentang Authorization