TIF_E41253310/Backend/app/routers/auth.py

52 lines
1.8 KiB
Python

from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.config.database import get_db
from app.schemas.user import UserCreate, UserUpdate, UserLogin
from app.controllers.auth import AuthController
# Create Router instance for auth endpoints
router = APIRouter()
@router.post("/register", summary="Registrasi user baru")
def register(user_in: UserCreate, db: Session = Depends(get_db)):
"""
Endpoint untuk melakukan registrasi user baru.
"""
return AuthController.register_user(db, user_in)
@router.post("/login", summary="Login user untuk mendapatkan JWT token")
def login(login_in: UserLogin, db: Session = Depends(get_db)):
"""
Endpoint untuk login user.
"""
return AuthController.login_user(db, login_in.username, login_in.password)
@router.get("/users", summary="Daftar semua pengguna / Kaprodi")
def get_users(db: Session = Depends(get_db)):
"""
Endpoint untuk mengambil seluruh data pengguna sistem (Admin & Kaprodi).
"""
return AuthController.get_users(db)
@router.post("/users", summary="Tambah pengguna baru oleh Admin")
def create_user(user_in: UserCreate, db: Session = Depends(get_db)):
"""
Endpoint untuk membuat akun pengguna / Kaprodi baru.
"""
return AuthController.register_user(db, user_in)
@router.put("/users/{user_id}", summary="Perbarui data pengguna")
def update_user(user_id: int, user_in: UserUpdate, db: Session = Depends(get_db)):
"""
Endpoint untuk mengedit profil, role, prodi, status aktif, atau password user.
"""
return AuthController.update_user(db, user_id, user_in)
@router.delete("/users/{user_id}", summary="Hapus pengguna")
def delete_user(user_id: int, db: Session = Depends(get_db)):
"""
Endpoint untuk menghapus akun pengguna (selain akun super admin utama).
"""
return AuthController.delete_user(db, user_id)