> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-13-pengayaan-proyek-and-portofolio/13.4-authorization-dasar.md).

# 13.4 Authorization Dasar

## Authorization dasar

Login saja belum cukup.

Aplikasi juga perlu membedakan siapa yang boleh melihat, menambah, mengubah, atau menghapus data.

### Target praktik subbab ini

Setelah menyelesaikan subbab ini, Anda seharusnya bisa:

* membedakan authentication dan authorization
* menambahkan field `role` sederhana pada user
* membatasi fitur kelola buku hanya untuk admin
* menyembunyikan tombol aksi dari user biasa
* menjaga controller tetap aman walau tombol disembunyikan

### Langkah praktik step-by-step

{% stepper %}
{% step %}

### Tambahkan field `role` pada tabel user

Buat migration untuk menambah kolom `role` pada tabel `users`.

Gunakan nilai sederhana seperti `admin` dan `user`.
{% endstep %}

{% step %}

### Isi role untuk akun uji

Setelah migration selesai, ubah satu akun menjadi `admin`.

Akun lain bisa tetap memakai role `user`.
{% endstep %}

{% step %}

### Batasi aksi di controller atau route

Tambahkan pengecekan sederhana sebelum aksi kelola data dijalankan.

Contohnya, hanya akun dengan role `admin` yang boleh membuka halaman create, edit, atau delete.
{% endstep %}

{% step %}

### Rapikan tombol di Blade

Di view daftar buku, tampilkan tombol aksi hanya untuk admin.

User biasa cukup melihat data atau memakai fitur pinjam jika memang diizinkan.
{% endstep %}

{% step %}

### Uji dua jenis akun

Login sebagai admin lalu cek semua tombol.

Logout, lalu login sebagai user biasa dan bandingkan hasilnya.
{% endstep %}
{% endstepper %}

### Output yang harus terlihat

Setelah subbab ini selesai, hasil berikut seharusnya sudah terlihat:

* tabel `users` punya kolom `role`
* akun admin bisa mengakses fitur kelola buku
* akun user biasa tidak bisa mengakses aksi yang dibatasi
* tombol tambah, edit, dan hapus tidak muncul untuk user biasa
* controller tetap menolak akses yang tidak berhak

### Troubleshooting yang paling sering

Masalah yang paling sering muncul:

* **semua user tetap bisa akses** — pengecekan role belum dipakai di controller atau route
* **tombol hilang tetapi URL masih bisa dibuka** — pembatasan baru dilakukan di Blade
* **kolom `role` tidak ada** — migration belum dijalankan
* **role akun tidak sesuai** — data user belum diperbarui

{% hint style="warning" %}
Menyembunyikan tombol di Blade bukan authorization penuh. Pembatasan tetap harus dicek di route atau controller.
{% endhint %}

### Mini tugas mandiri

Kerjakan tugas kecil ini:

* buat satu akun admin dan satu akun user biasa
* batasi tombol **Tambah Buku** hanya untuk admin
* uji akses URL create saat login sebagai user biasa

### Ringkasan subbab

Di subbab ini, Anda mulai membedakan siapa yang boleh melakukan aksi tertentu.

Ini membuat aplikasi lebih aman dan lebih mendekati kebutuhan proyek nyata.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-13-pengayaan-proyek-and-portofolio/13.4-authorization-dasar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
