fix: use JSON body for login instead of form data

This commit is contained in:
shokollm
2026-04-10 08:09:42 +00:00
parent 937cc2da60
commit c6baadf8b8
2 changed files with 10 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
from fastapi import APIRouter, Depends, HTTPException, status, Request from fastapi import APIRouter, Depends, HTTPException, status, Request
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm from fastapi.security import OAuth2PasswordBearer
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from typing import Annotated from typing import Annotated
@@ -14,6 +14,7 @@ from ..core.config import get_settings
from ..core.limiter import limiter from ..core.limiter import limiter
from ..db.schemas import ( from ..db.schemas import (
UserCreate, UserCreate,
LoginRequest,
UserResponse, UserResponse,
Token, Token,
UserSettings, UserSettings,
@@ -85,11 +86,11 @@ def register(user: UserCreate, db: Session = Depends(get_db)):
@limiter.limit("5/minute") @limiter.limit("5/minute")
def login( def login(
request: Request, request: Request,
form_data: Annotated[OAuth2PasswordRequestForm, Depends()], login_data: LoginRequest,
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.username).first()
if not user or not verify_password(form_data.password, user.password_hash): if not user or not verify_password(login_data.password, user.password_hash):
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",

View File

@@ -8,6 +8,11 @@ class UserCreate(BaseModel):
password: str password: str
class LoginRequest(BaseModel):
username: EmailStr
password: str
class UserResponse(BaseModel): class UserResponse(BaseModel):
id: str id: str
email: str email: str