Skip to content

Simpel REST API yang menyediakan sistem login, register, dan manajemen user berbasis Python (FastAPI) dan MySQL.

Notifications You must be signed in to change notification settings

Bayyzp/fastapi-auth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auth REST API (Dockerized)

API menyediakan sistem login, register, dan manajemen user berbasis Python (FastAPI) dan MySQL. Sudah termasuk validasi JWT, proteksi endpoint, dan role-based access control.


📦 Fitur

  • ✅ 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})
  • Password di-hash pakai bcrypt
  • JWT-based auth
  • Role-based access: user & admin

⚙️ Teknologi

  • Python 3.10+
  • FastAPI
  • SQLAlchemy ORM
  • MySQL / MariaDB (via Docker)
  • JWT (python-jose)
  • bcrypt (passlib)
  • Python Dotenv
  • Docker + Docker Compose

🐳 Menjalankan dengan Docker

1. Salin .env (otomatis sudah disiapkan)

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=db karena service MySQL ada di dalam Docker Compose


2. Jalankan aplikasi

docker compose up --build -d
  • FastAPI → http://localhost:8000
  • Swagger UI → http://localhost:8000/docs
  • Redoc → http://localhost:8000/redoc

🔐 Cara Login & Gunakan Bearer Token

  1. Login via POST ke /login
{
  "username": "admin",
  "password": "admin123"
}
  1. Dapatkan response:
{
  "access_token": "xxxxx.yyyyy.zzzzz",
  "token_type": "bearer"
}
  1. Gunakan token di header untuk akses protected route:
Authorization: Bearer xxxxx.yyyyy.zzzzz

🧑‍💼 Role-based Access

  • Default role saat register: user
  • Role admin bisa mengakses endpoint /admin/users
  • Kolom role disimpan di tabel users

🛡️ Tambah Admin Manual di FastAPI Auth

  • Docker container fastapi_app harus sudah berjalan.
  1. Masuk ke direktori proyek:
cd ~/fastapi-auth
  1. (Opsional) Pastikan kontainer sudah berjalan:
docker ps
  1. Jalankan perintah berikut untuk menambahkan admin:
docker exec -it fastapi_app python3 /app/add_admin.py
  1. Ikuti petunjuk input:
=== Tambah Admin Baru ===
Username: admin123
Password:
✔️ Admin 'admin123' berhasil ditambahkan.

🧪 Untuk Verifikasi

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>

🗃️ Struktur Folder

fastapi_auth/
├── app/
│   ├── main.py
│   ├── models.py
│   ├── schemas.py
│   ├── auth.py
│   └── ...
├── .env
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── README.md

🛠️ Untuk Development Lokal (tanpa Docker)

  1. Install Python dependencies:
pip install -r requirements.txt
  1. Buat file .env seperti di atas

  2. Jalankan dengan Uvicorn:

uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

📜 Lisensi

MIT — Bebas digunakan dan dimodifikasi.


Sistem API login modern berbasis Python FastAPI.
Dirancang untuk performa, keamanan, dan kemudahan integrasi.

About

Simpel REST API yang menyediakan sistem login, register, dan manajemen user berbasis Python (FastAPI) dan MySQL.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published