from fastapi import APIRouter, Depends, HTTPException from pydantic import BaseModel from app.auth.jwt_provider import JWTAuthProvider from app.dependencies import get_jwt_auth router = APIRouter(tags=["auth"]) class LoginRequest(BaseModel): username: str password: str class TokenResponse(BaseModel): access_token: str token_type: str = "bearer" expires_in: int @router.post("/auth/token", response_model=TokenResponse) async def login(body: LoginRequest, auth: JWTAuthProvider = Depends(get_jwt_auth)): if not auth.verify_credentials(body.username, body.password): raise HTTPException( status_code=401, detail={"detail": "Invalid credentials", "code": "invalid_credentials"}, ) token = auth.create_token() return TokenResponse( access_token=token, token_type="bearer", expires_in=auth._expiry_seconds, )