from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.core.security import ( create_access_token, get_access_token_expire_seconds, verify_password, ) from app.db.database import get_db from app.models.user import User from app.schemas.user import LoginRequest, LoginResponse router = APIRouter( prefix="/auth", tags=["Authentication"], ) @router.post("/login", response_model=LoginResponse) def login( login: LoginRequest, db: Session = Depends(get_db), ): user = db.query(User).filter(User.username == login.username).first() if not user: raise HTTPException( status_code=401, detail="Ungültige Anmeldedaten", ) if not verify_password(login.password, user.password_hash): raise HTTPException( status_code=401, detail="Ungültige Anmeldedaten", ) token = create_access_token(user.username) return { "access_token": token, "token_type": "bearer", "expires_in": get_access_token_expire_seconds(), "user": user, }