| from app import db | |
| from app.user import hashing | |
| from app.user.models import User | |
| from fastapi import APIRouter, Depends, HTTPException, status | |
| from fastapi.security import OAuth2PasswordRequestForm | |
| from sqlalchemy.orm import Session | |
| from .jwt import create_access_token | |
| router = APIRouter(tags=["auth"]) | |
| def login( | |
| request: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(db.get_db) | |
| ): | |
| user = db.query(User).filter(User.email == request.username).first() | |
| if not user: | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, detail="Invalid credentials" | |
| ) | |
| if not hashing.verify_password(request.password, user.password): | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, detail="Incorrect password" | |
| ) | |
| access_token = create_access_token(data={"sub": user.email}) | |
| return {"access_token": access_token, "token_type": "bearer"} | |