fix: use JSON body for login instead of form data
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user