Add POST endpoint for /login

This commit is contained in:
Backend IM Bot 2025-03-26 19:26:52 +00:00
parent d55c1a00bd
commit c78ebb4f4b

View File

@ -2,33 +2,23 @@
```python ```python
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from core.database import get_db from core.database import get_db
from core.security import verify_password, create_access_token from core.models.user import User
from models.user import User from core.schemas.user import UserLogin, UserResponse
from schemas.user import UserLogin, TokenResponse
router = APIRouter() router = APIRouter()
@router.post("/login", response_model=TokenResponse) @router.post("/login", status_code=200, response_model=UserResponse)
async def login( async def login(
form_data: OAuth2PasswordRequestForm = Depends(), login_data: UserLogin,
db: Session = Depends(get_db) db: Session = Depends(get_db)
): ):
user = db.query(User).filter(User.email == form_data.username).first() user = db.query(User).filter(User.email == login_data.email).first()
if not user or not user.verify_password(login_data.password):
if not user or not verify_password(form_data.password, user.hashed_password):
raise HTTPException( raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect email or password", detail="Incorrect email or password"
headers={"WWW-Authenticate": "Bearer"},
) )
return user
access_token = create_access_token(data={"sub": user.email})
return {
"access_token": access_token,
"token_type": "bearer"
}
``` ```