feat: delete user backend support

This commit is contained in:
Timothy J. Baek 2023-12-28 23:02:49 -08:00
parent 8370465796
commit b61bb77950
3 changed files with 51 additions and 0 deletions

View file

@ -8,6 +8,8 @@ from utils.utils import decode_token
from utils.misc import get_gravatar_url
from apps.web.internal.db import DB
from apps.web.models.chats import Chat
####################
# User DB Schema
@ -110,5 +112,19 @@ class UsersTable:
except:
return None
def delete_user_by_id(self, id: str) -> bool:
try:
# Delete User Chats
query = Chat.delete().where(Chat.user_id == id)
query.execute() # Remove the rows, return number of rows removed.
# Delete User
query = User.delete().where(User.id == id)
query.execute() # Remove the rows, return number of rows removed.
return True
except:
return False
Users = UsersTable(DB)

View file

@ -73,3 +73,36 @@ async def update_user_role(form_data: UserRoleUpdateForm, cred=Depends(bearer_sc
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.INVALID_TOKEN,
)
############################
# DeleteUser
############################
@router.delete("/{user_id}", response_model=bool)
async def delete_user_by_id(user_id: str, cred=Depends(bearer_scheme)):
token = cred.credentials
user = Users.get_user_by_token(token)
if user:
if user.role == "admin":
result = Users.delete_user_by_id(user_id)
if result:
return True
else:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=ERROR_MESSAGES.DELETE_USER_ERROR,
)
else:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.INVALID_TOKEN,
)