11from  typing  import  Annotated , Union , Dict , Any 
22
3- from  fastapi  import  Depends ,  HTTPException 
3+ from  fastapi  import  Depends 
44from  sqlalchemy .ext .asyncio  import  AsyncSession 
55from  fastapi  import  Request 
66import  fastapi 
99from  app .core .exceptions .http_exceptions  import  DuplicateValueException , NotFoundException , ForbiddenException 
1010from  app .api .paginated  import  PaginatedListResponse , paginated_response , compute_offset 
1111from  app .core .db .database  import  async_get_db 
12- from  app .core .security  import  get_password_hash 
12+ from  app .core .security  import  get_password_hash ,  blacklist_token ,  oauth2_scheme 
1313from  app .crud .crud_users  import  crud_users 
1414from  app .crud .crud_tier  import  crud_tiers 
1515from  app .crud .crud_rate_limit  import  crud_rate_limits 
@@ -116,9 +116,10 @@ async def patch_user(
116116@router .delete ("/user/{username}" ) 
117117async  def  erase_user (
118118    request : Request , 
119-     username : str ,  
119+     username : str ,
120120    current_user : Annotated [UserRead , Depends (get_current_user )],
121-     db : Annotated [AsyncSession , Depends (async_get_db )]
121+     db : Annotated [AsyncSession , Depends (async_get_db )],
122+     token : str  =  Depends (oauth2_scheme )
122123) ->  Dict [str , str ]:
123124    db_user  =  await  crud_users .get (db = db , schema_to_select = UserRead , username = username )
124125    if  not  db_user :
@@ -128,20 +129,23 @@ async def erase_user(
128129        raise  ForbiddenException ()
129130
130131    await  crud_users .delete (db = db , db_row = db_user , username = username )
132+     await  blacklist_token (token = token , db = db )
131133    return  {"message" : "User deleted" }
132134
133135
134136@router .delete ("/db_user/{username}" , dependencies = [Depends (get_current_superuser )]) 
135137async  def  erase_db_user (
136138    request : Request , 
137139    username : str ,
138-     db : Annotated [AsyncSession , Depends (async_get_db )]
140+     db : Annotated [AsyncSession , Depends (async_get_db )],
141+     token : str  =  Depends (oauth2_scheme )
139142) ->  Dict [str , str ]:
140143    db_user  =  await  crud_users .exists (db = db , username = username )
141144    if  not  db_user :
142145        raise  NotFoundException ("User not found" )
143146
144147    db_user  =  await  crud_users .db_delete (db = db , username = username )
148+     await  blacklist_token (token = token , db = db )
145149    return  {"message" : "User deleted from the database" }
146150
147151
0 commit comments