Home Paket Belajar Bootcamp Instruktur

Tutorial Laravel Authorization #1 - Pengenalan Authorization di Laravel

Pelajari sistem Authorization di Laravel dari nol hingga implementasi dalam studi kasus nyata melalui 5 episode terstruktur. Ebook ini membahas konsep Authentication vs Authorization, Gates, Policies, fitur lanjutan, hingga menggabungkan seluruh konsep dalam sebuah aplikasi blog. Setiap materi dilengkapi penjelasan konsep, contoh kode siap pakai, tabel perbandingan, dan praktik terbaik agar mudah dipahami oleh developer Laravel pemula maupun menengah.

✅ Telah dilihat 22 kali

Rating: 5.00 ⭐

... 11 June 2026, 14:31

Setelah menonton episode ini, teman-teman akan memahami:

  • Perbedaan antara Authentication dan Authorization
  • Dua cara bawaan Laravel untuk mengatur hak akses: Gates dan Policies
  • Kapan sebaiknya menggunakan Gates, dan kapan menggunakan Policies

1. Authentication vs Authorization

Banyak pemula yang sering tertukar antara dua konsep ini. Bedanya simpel:

Konsep Pertanyaan Contoh
Authentication Siapa teman-teman? Login dengan email & password
Authorization Boleh nggak teman-teman melakukan ini? Apakah user boleh menghapus postingan ini?

Laravel sudah menangani authentication (misalnya lewat Breeze atau Sanctum). Episode ini dan seterusnya fokus ke authorization — yaitu mengatur siapa yang boleh melakukan apa setelah mereka login.


2. Masalah yang Sering Terjadi Tanpa Authorization

Bayangkan teman-teman punya fitur hapus postingan. Tanpa authorization, kode controller-mu mungkin seperti ini:

public function destroy(Post $post)
{
    $post->delete();
    return redirect()->route('posts.index');
}

Masalahnya: semua user yang login bisa menghapus postingan siapapun, termasuk postingan milik orang lain. Ini berbahaya!

Solusinya adalah authorization — memastikan hanya user yang berhak yang bisa melakukan aksi tertentu.


3. Dua Cara Authorization di Laravel

Laravel menyediakan dua mekanisme bawaan:

Gates

  • Ditulis sebagai closure (fungsi anonim)
  • Didefinisikan di App\Providers\AppServiceProvider
  • Cocok untuk aturan sederhana yang tidak terikat ke satu model tertentu
  • Contoh: apakah user adalah admin?
Gate::define('manage-settings', function (User $user) {
    return $user->is_admin === true;
});

Policies

  • Ditulis sebagai class PHP tersendiri
  • Satu Policy untuk satu Model (misalnya PostPolicy untuk model Post)
  • Cocok untuk aturan yang lebih kompleks dan terikat ke model
  • Contoh: apakah user boleh mengedit postingan ini?
// app/Policies/PostPolicy.php
public function update(User $user, Post $post): bool
{
    return $user->id === $post->user_id;
}

4. Kapan Pakai Gates, Kapan Pakai Policies?

Gunakan Gates ketika:

  • Aturan tidak terkait dengan model spesifik
  • Aturan bersifat global (misalnya cek apakah user adalah admin)
  • teman-teman hanya butuh pengecekan sederhana di satu atau dua tempat

Gunakan Policies ketika:

  • Aturan berkaitan dengan operasi pada suatu model (create, read, update, delete)
  • teman-teman ingin kode lebih terorganisir dan mudah di-maintain
  • Ada banyak aturan yang berlaku untuk satu model

Tips: Untuk project yang berkembang, lebih baik langsung gunakan Policies. Lebih rapi dan mudah dikembangkan.


5. Struktur Folder yang Relevan

app/
├── Models/
│   └── Post.php
├── Policies/           ← Policy disimpan di sini
│   └── PostPolicy.php
└── Providers/
    └── AppServiceProvider.php  ← Gates didefinisikan di sini

Ringkasan Episode

  • Authentication = memverifikasi identitas user; Authorization = mengatur hak akses user
  • Gates = aturan sederhana berbasis closure, cocok untuk pengecekan global
  • Policies = class khusus per model, cocok untuk aturan CRUD yang kompleks
  • Keduanya adalah fitur bawaan Laravel, tidak perlu install package tambahan

Preview Episode Berikutnya

Di Episode 2, kita akan langsung praktik membuat dan menggunakan Gates — mulai dari mendefinisikan, menggunakannya di controller, hingga di Blade template.

Daftar eBook