1717 UpdatePassword ,
1818 User ,
1919 UserCreate ,
20- UserOut ,
20+ UserPublic ,
2121 UserRegister ,
22- UsersOut ,
22+ UsersPublic ,
2323 UserUpdate ,
2424 UserUpdateMe ,
2525)
2929
3030
3131@router .get (
32- "/" , dependencies = [Depends (get_current_active_superuser )], response_model = UsersOut
32+ "/" ,
33+ dependencies = [Depends (get_current_active_superuser )],
34+ response_model = UsersPublic ,
3335)
3436def read_users (session : SessionDep , skip : int = 0 , limit : int = 100 ) -> Any :
3537 """
@@ -42,11 +44,11 @@ def read_users(session: SessionDep, skip: int = 0, limit: int = 100) -> Any:
4244 statement = select (User ).offset (skip ).limit (limit )
4345 users = session .exec (statement ).all ()
4446
45- return UsersOut (data = users , count = count )
47+ return UsersPublic (data = users , count = count )
4648
4749
4850@router .post (
49- "/" , dependencies = [Depends (get_current_active_superuser )], response_model = UserOut
51+ "/" , dependencies = [Depends (get_current_active_superuser )], response_model = UserPublic
5052)
5153def create_user (* , session : SessionDep , user_in : UserCreate ) -> Any :
5254 """
@@ -72,7 +74,7 @@ def create_user(*, session: SessionDep, user_in: UserCreate) -> Any:
7274 return user
7375
7476
75- @router .patch ("/me" , response_model = UserOut )
77+ @router .patch ("/me" , response_model = UserPublic )
7678def update_user_me (
7779 * , session : SessionDep , user_in : UserUpdateMe , current_user : CurrentUser
7880) -> Any :
@@ -114,15 +116,31 @@ def update_password_me(
114116 return Message (message = "Password updated successfully" )
115117
116118
117- @router .get ("/me" , response_model = UserOut )
119+ @router .get ("/me" , response_model = UserPublic )
118120def read_user_me (current_user : CurrentUser ) -> Any :
119121 """
120122 Get current user.
121123 """
122124 return current_user
123125
124126
125- @router .post ("/signup" , response_model = UserOut )
127+ @router .delete ("/me" , response_model = Message )
128+ def delete_user_me (session : SessionDep , current_user : CurrentUser ) -> Any :
129+ """
130+ Delete own user.
131+ """
132+ if current_user .is_superuser :
133+ raise HTTPException (
134+ status_code = 403 , detail = "Super users are not allowed to delete themselves"
135+ )
136+ statement = delete (Item ).where (col (Item .owner_id ) == current_user .id )
137+ session .exec (statement ) # type: ignore
138+ session .delete (current_user )
139+ session .commit ()
140+ return Message (message = "User deleted successfully" )
141+
142+
143+ @router .post ("/signup" , response_model = UserPublic )
126144def register_user (session : SessionDep , user_in : UserRegister ) -> Any :
127145 """
128146 Create new user without the need to be logged in.
@@ -143,7 +161,7 @@ def register_user(session: SessionDep, user_in: UserRegister) -> Any:
143161 return user
144162
145163
146- @router .get ("/{user_id}" , response_model = UserOut )
164+ @router .get ("/{user_id}" , response_model = UserPublic )
147165def read_user_by_id (
148166 user_id : int , session : SessionDep , current_user : CurrentUser
149167) -> Any :
@@ -164,7 +182,7 @@ def read_user_by_id(
164182@router .patch (
165183 "/{user_id}" ,
166184 dependencies = [Depends (get_current_active_superuser )],
167- response_model = UserOut ,
185+ response_model = UserPublic ,
168186)
169187def update_user (
170188 * ,
@@ -193,7 +211,7 @@ def update_user(
193211 return db_user
194212
195213
196- @router .delete ("/{user_id}" )
214+ @router .delete ("/{user_id}" , dependencies = [ Depends ( get_current_active_superuser )] )
197215def delete_user (
198216 session : SessionDep , current_user : CurrentUser , user_id : int
199217) -> Message :
@@ -203,15 +221,10 @@ def delete_user(
203221 user = session .get (User , user_id )
204222 if not user :
205223 raise HTTPException (status_code = 404 , detail = "User not found" )
206- elif user != current_user and not current_user .is_superuser :
207- raise HTTPException (
208- status_code = 403 , detail = "The user doesn't have enough privileges"
209- )
210- elif user == current_user and current_user .is_superuser :
224+ if user == current_user :
211225 raise HTTPException (
212226 status_code = 403 , detail = "Super users are not allowed to delete themselves"
213227 )
214-
215228 statement = delete (Item ).where (col (Item .owner_id ) == user_id )
216229 session .exec (statement ) # type: ignore
217230 session .delete (user )
0 commit comments