from typing import Annotated from datetime import timedelta from fastapi import APIRouter, HTTPException, Depends from fastapi.security import OAuth2PasswordRequestForm from app.api.dependencies import SessionDep from app.schemas.user_schemas import Token from app.core import security from app.core.config import settings router = APIRouter(tags=["login"]) @router.post("/login/access-token") def login_access_token( session: SessionDep, form_data: Annotated[OAuth2PasswordRequestForm, Depends()] ) -> Token: """ OAuth2 compatible token login, get an access token for future requests """ user = None # user = crud.authenticate( # session=session, email=form_data.username, password=form_data.password # ) if not user: raise HTTPException(status_code=400, detail="Incorrect email or password") elif not user: raise HTTPException(status_code=400, detail="Inactive user") access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES) return Token( access_token=security.create_access_token( user.id, expires_delta=access_token_expires ) )