@@ -73,18 +73,36 @@ def get_recent_users(
7373@router .put ("/users/{user_id}/role" )
7474def update_user_role (
7575 user_id : int ,
76- role : str ,
77- db : Session = Depends (database . get_db ),
78- admin : models . User = Depends (get_current_admin )
76+ role : str ,
77+ admin : models . User = Depends (get_current_admin ),
78+ db : Session = Depends (database . get_db )
7979):
8080 """Update a user's system role (patient, doctor, admin)."""
8181 user = db .query (models .User ).filter (models .User .id == user_id ).first ()
8282 if not user :
8383 raise HTTPException (status_code = 404 , detail = "User not found" )
84-
84+
8585 if role not in ["patient" , "doctor" , "admin" ]:
8686 raise HTTPException (status_code = 400 , detail = "Invalid role. Must be patient, doctor, or admin." )
8787
8888 user .role = role
8989 db .commit ()
90- return {"status" : "success" , "message" : f"User { user .username } promoted to { role } " }
90+ return {"message" : f"User role updated to { role } " }
91+
92+ @router .delete ("/users/{user_id}" )
93+ def delete_user (
94+ user_id : int ,
95+ admin : models .User = Depends (get_current_admin ),
96+ db : Session = Depends (database .get_db )
97+ ):
98+ """Permanently delete a user and their data."""
99+ user = db .query (models .User ).filter (models .User .id == user_id ).first ()
100+ if not user :
101+ raise HTTPException (status_code = 404 , detail = "User not found" )
102+
103+ if user .id == admin .id :
104+ raise HTTPException (status_code = 400 , detail = "Cannot delete yourself." )
105+
106+ db .delete (user )
107+ db .commit ()
108+ return {"message" : "User deleted successfully" }
0 commit comments