|
2 | 2 | from typing import Any |
3 | 3 |
|
4 | 4 | from fastapi import APIRouter, Depends, HTTPException, status |
5 | | -from fastapi.security import OAuth2PasswordRequestForm |
6 | 5 | from sqlalchemy.orm import Session |
7 | 6 |
|
8 | 7 | from app.api.deps import get_current_user |
|
11 | 10 | from app.crud.crud_user import user |
12 | 11 | from app.schemas.user import User, UserCreate, Token |
13 | 12 | from app.db.session import get_db |
| 13 | +from pydantic import BaseModel, EmailStr |
14 | 14 |
|
15 | 15 | router = APIRouter() |
16 | 16 |
|
17 | 17 |
|
| 18 | +class LoginRequest(BaseModel): |
| 19 | + email: EmailStr = "demo@example.com" |
| 20 | + password: str = "password123" |
| 21 | + |
| 22 | + class Config: |
| 23 | + schema_extra = { |
| 24 | + "example": {"email": "user@example.com", "password": "supersecret"} |
| 25 | + } |
| 26 | + |
| 27 | + |
18 | 28 | @router.post("/login", response_model=Token, status_code=status.HTTP_200_OK) |
19 | 29 | def login_access_token( |
20 | | - db: Session = Depends(get_db), form_data: OAuth2PasswordRequestForm = Depends() |
| 30 | + login_data: LoginRequest, |
| 31 | + db: Session = Depends(get_db) |
21 | 32 | ) -> Any: |
22 | 33 | """ |
23 | | - OAuth2 compatible token login, get an access token for future requests. |
| 34 | + Token login with JSON, get an access token for future requests. |
24 | 35 |
|
25 | | - - **username**: Email address |
| 36 | + - **email**: Email address |
26 | 37 | - **password**: User password |
27 | 38 | """ |
28 | 39 | user_obj = user.authenticate( |
29 | | - db, email=form_data.username, password=form_data.password |
| 40 | + db, email=login_data.email, password=login_data.password |
30 | 41 | ) |
31 | 42 | if not user_obj: |
32 | 43 | raise HTTPException( |
@@ -70,10 +81,9 @@ def create_user( |
70 | 81 |
|
71 | 82 | @router.get("/me", response_model=User) |
72 | 83 | def read_users_me( |
73 | | - |
| 84 | + current_user: User = Depends(get_current_user) |
74 | 85 | ) -> Any: |
75 | 86 | """ |
76 | 87 | Get current user. |
77 | 88 | """ |
78 | | - current_user = Depends(get_current_user) |
79 | 89 | return current_user |
0 commit comments