mirror of
https://github.com/fastapi/full-stack-fastapi-template.git
synced 2026-09-25 22:53:25 +00:00
✨ Support delete own account and other tweaks (#614)
Co-authored-by: Esteban Maya Cadavid <emaya@trueblue.com>
This commit is contained in:
co-authored by
Esteban Maya Cadavid
parent
e44777f919
commit
2346b81c51
@@ -1,7 +1,7 @@
|
||||
from typing import Any
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlmodel import func, select
|
||||
from sqlmodel import func, select, delete
|
||||
|
||||
from app import crud
|
||||
from app.api.deps import (
|
||||
@@ -21,6 +21,7 @@ from app.models import (
|
||||
UsersOut,
|
||||
UserUpdate,
|
||||
UserUpdateMe,
|
||||
Item
|
||||
)
|
||||
from app.utils import send_new_account_email
|
||||
|
||||
@@ -194,12 +195,14 @@ def delete_user(
|
||||
user = session.get(User, user_id)
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="User not found")
|
||||
if not current_user.is_superuser:
|
||||
raise HTTPException(status_code=400, detail="Not enough permissions")
|
||||
if user == current_user:
|
||||
|
||||
if (user == current_user and not current_user.is_superuser) or (user != current_user and current_user.is_superuser):
|
||||
statement = delete(Item).where(Item.owner_id == user_id)
|
||||
session.exec(statement)
|
||||
session.delete(user)
|
||||
session.commit()
|
||||
return Message(message="User deleted successfully")
|
||||
elif user == current_user and current_user.is_superuser:
|
||||
raise HTTPException(
|
||||
status_code=400, detail="Users are not allowed to delete themselves"
|
||||
status_code=400, detail="Super users are not allowed to delete themselves"
|
||||
)
|
||||
session.delete(user)
|
||||
session.commit()
|
||||
return Message(message="User deleted successfully")
|
||||
|
||||
Reference in New Issue
Block a user