1- from typing import List
1+ from typing import Annotated , List
22
3+ from api .database .models .users import User
34from api .schemas .user import UserCreate , UserOut
5+ from api .services .auth import AuthService
46from api .services .user_service import UserService
5- from fastapi import APIRouter
7+ from fastapi import APIRouter , Depends
68
79router = APIRouter ()
10+ authenticated_router = APIRouter (
11+ dependencies = [Depends (AuthService .get_current_active_user )]
12+ )
813
914
10- @router .get ("/" , response_model = List [UserOut ])
15+ @authenticated_router .get ("/" , response_model = List [UserOut ])
1116async def get_users () -> List [UserOut ]:
1217 """
1318 Retrieve a list of all users.
@@ -18,7 +23,17 @@ async def get_users() -> List[UserOut]:
1823 return await UserService ().get_all ()
1924
2025
21- @router .get ("/{user_id}" , response_model = UserOut )
26+ @router .get ("/me" , response_model = UserOut )
27+ async def read_user_me (
28+ current_user : Annotated [User , Depends (AuthService .get_current_active_user )]
29+ ):
30+ """
31+ Retrieve the currently authenticated user by Bearer token.
32+ """
33+ return current_user
34+
35+
36+ @authenticated_router .get ("/{user_id}" , response_model = UserOut )
2237async def get_user (user_id : int ) -> UserOut :
2338 """
2439 Retrieve a user by ID.
@@ -46,7 +61,7 @@ async def create_user(user: UserCreate):
4661 return await UserService ().create_user (user )
4762
4863
49- @router .put ("/{user_id}" , response_model = None )
64+ @authenticated_router .put ("/{user_id}" , response_model = None )
5065async def update_user (user_id : int , user : UserCreate ) -> None :
5166 """
5267 Update a user by ID.
@@ -61,7 +76,7 @@ async def update_user(user_id: int, user: UserCreate) -> None:
6176 return await UserService ().update_user (user_id , user )
6277
6378
64- @router .delete ("/{user_id}" , response_model = None )
79+ @authenticated_router .delete ("/{user_id}" , response_model = None )
6580async def delete_user (user_id : int ) -> None :
6681 """
6782 Delete a user by ID.
0 commit comments