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