22 lines
681 B
Python
22 lines
681 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Annotated
|
||
|
|
|
||
|
|
from fastapi import APIRouter, Depends, HTTPException, status
|
||
|
|
from sqlalchemy.orm import Session
|
||
|
|
|
||
|
|
from app.api.deps import get_db
|
||
|
|
from app.schemas.auth import LoginRequest, LoginResponse
|
||
|
|
from app.services.auth import AuthService
|
||
|
|
|
||
|
|
router = APIRouter(prefix="/auth")
|
||
|
|
DbSession = Annotated[Session, Depends(get_db)]
|
||
|
|
|
||
|
|
|
||
|
|
@router.post("/login", response_model=LoginResponse)
|
||
|
|
def login(payload: LoginRequest, db: DbSession) -> LoginResponse:
|
||
|
|
try:
|
||
|
|
return AuthService(db).login(payload)
|
||
|
|
except ValueError as exc:
|
||
|
|
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=str(exc)) from exc
|