1+ from typing import Annotated
2+
13from fastapi import APIRouter , Depends , status
4+ from fastapi .security import OAuth2PasswordRequestForm
25from sqlalchemy .ext .asyncio import AsyncSession
36
47from api .core .database import get_session
58from api .core .logging import get_logger
9+ from api .core .security import get_current_user
10+ from api .src .users .models import User
611from api .src .users .schemas import LoginData , Token , UserCreate , UserResponse
712from api .src .users .service import UserService
813
@@ -24,8 +29,16 @@ async def register(
2429
2530@router .post ("/login" , response_model = Token )
2631async def login (
27- login_data : LoginData , session : AsyncSession = Depends (get_session )
32+ form_data : Annotated [OAuth2PasswordRequestForm , Depends ()],
33+ session : AsyncSession = Depends (get_session ),
2834) -> Token :
2935 """Authenticate user and return token."""
36+ login_data = LoginData (email = form_data .username , password = form_data .password )
3037 logger .debug (f"Login attempt: { login_data .email } " )
3138 return await UserService (session ).authenticate (login_data )
39+
40+
41+ @router .get ("/me" , response_model = UserResponse )
42+ async def get_me (user : User = Depends (get_current_user )) -> UserResponse :
43+ """Get current authenticated user."""
44+ return user
0 commit comments