from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.schemas.user import UserCreate, UserResponse, UserLogin, Token from app.services.auth import AuthService, get_current_user from app.core.security import create_access_token from app.db.session import get_db from app.models.user import User router = APIRouter(prefix="/auth", tags=["Authentication"]) @router.post("/register", response_model=UserResponse) def register(user_data: UserCreate, db: Session = Depends(get_db)): auth_service = AuthService(db) user = auth_service.create_user(user_data) return user @router.post("/login", response_model=Token) def login(login_data: UserLogin, db: Session = Depends(get_db)): auth_service = AuthService(db) user = auth_service.authenticate_user(login_data) access_token = create_access_token(data={"sub": user.email}) return {"access_token": access_token, "token_type": "bearer"} @router.get("/me", response_model=UserResponse) def get_current_user_info(current_user: User = Depends(get_current_user)): return current_user