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)