API menyediakan sistem login, register, dan manajemen user berbasis Python (FastAPI) dan MySQL. Sudah termasuk validasi JWT, proteksi endpoint, dan role-based access control.
- ✅ Register user baru (
POST /register) - 🔐 Login dan generate JWT token (
POST /login) - Lihat profil user login (
GET /me) - Edit profil sendiri (
PATCH /me) - Hapus akun sendiri (
DELETE /me) - 🧑💼 Admin:
- Lihat semua user (
GET /admin/users) - Hapus user (
DELETE /admin/users/{id})
- Lihat semua user (
- Password di-hash pakai bcrypt
- JWT-based auth
- Role-based access:
user&admin
- Python 3.10+
- FastAPI
- SQLAlchemy ORM
- MySQL / MariaDB (via Docker)
- JWT (python-jose)
- bcrypt (passlib)
- Python Dotenv
- Docker + Docker Compose
Contoh isi:
DB_HOST=db
DB_PORT=3306
DB_USER=auth_user
DB_PASS=auth_password
DB_NAME=auth_db
SECRET_KEY=your_super_secret
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
DB_HOST=dbkarena service MySQL ada di dalam Docker Compose
docker compose up --build -d- FastAPI →
http://localhost:8000 - Swagger UI →
http://localhost:8000/docs - Redoc →
http://localhost:8000/redoc
- Login via POST ke
/login
{
"username": "admin",
"password": "admin123"
}- Dapatkan response:
{
"access_token": "xxxxx.yyyyy.zzzzz",
"token_type": "bearer"
}- Gunakan token di header untuk akses protected route:
Authorization: Bearer xxxxx.yyyyy.zzzzz
- Default role saat register:
user - Role
adminbisa mengakses endpoint/admin/users - Kolom
roledisimpan di tabelusers
- Docker container
fastapi_appharus sudah berjalan.
- Masuk ke direktori proyek:
cd ~/fastapi-auth- (Opsional) Pastikan kontainer sudah berjalan:
docker ps- Jalankan perintah berikut untuk menambahkan admin:
docker exec -it fastapi_app python3 /app/add_admin.py- Ikuti petunjuk input:
=== Tambah Admin Baru ===
Username: admin123
Password:
✔️ Admin 'admin123' berhasil ditambahkan.
Coba login via endpoint /login menggunakan username dan password admin yang baru.
Gunakan token yang diterima untuk mengakses endpoint yang membutuhkan hak akses admin, misalnya:
GET /admin/users
Authorization: Bearer <your_token_here>
fastapi_auth/
├── app/
│ ├── main.py
│ ├── models.py
│ ├── schemas.py
│ ├── auth.py
│ └── ...
├── .env
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── README.md
- Install Python dependencies:
pip install -r requirements.txt-
Buat file
.envseperti di atas -
Jalankan dengan Uvicorn:
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reloadMIT — Bebas digunakan dan dimodifikasi.
Sistem API login modern berbasis Python FastAPI.
Dirancang untuk performa, keamanan, dan kemudahan integrasi.