Sesi 3: Models & Auth System
SQLAlchemy ORM, Pydantic Schemas, & JWT Login
Kita membuat struktur folder app/models. File ini memetakan tabel SQL ke Class Python.
Schemas mendefinisikan struktur data masuk (Request) dan keluar (Response).
Modul ini menangani logika otentikasi dan dependency injection untuk melindungi endpoint.
Endpoint untuk Login dan Mendapatkan Profil User.
A. Update main.py untuk mengaktifkan router Auth:
B. PENTING: Fix Password Placeholder. Karena password di database adalah fake hash, kita buat script sekali jalan untuk mengubah password user 'admin' menjadi Admin@Baktimakmur#2026.
1. Jalankan script reset password (sekali saja):
2. Restart server API:
3. Buka Swagger UI di browser:
4. Lakukan Test Login:
- Klik endpoint POST /api/v1/auth/login.
- Klik Try it out.
- Isi Body JSON:
{ "username": "admin", "password": "Admin@Baktimakmur#2026" } - Klik Execute.
Jika sukses, Anda akan mendapatkan response "access_token": "...".
5. Test Endpoint Terproteksi (Get Me):
- Copy token yang muncul dari langkah 4.
- Klik tombol Authorize (di pojok kanan atas Swagger).
- Paste token (tanpa kata "Bearer", hanya tokennya saja).
- Klik Authorize lagi, lalu Close.
- Buka endpoint GET /api/v1/auth/me -> Try it out -> Execute.
- Anda harus melihat data user admin lengkap.