| | 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"]) |
| |
|
| |
|
| | @router.post("/login") |
| | 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"} |
| |
|