diff --git a/backend/main.py b/backend/main.py index 1ed768d..09abbd3 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1107,10 +1107,21 @@ def delete_user(user_id: int, user=Depends(require_role("admin"))): if not target: conn.close() raise HTTPException(404, "User not found") + # Transfer personal diary recipes to admin before deletion + target_name = target["display_name"] or target["username"] + diaries = conn.execute("SELECT id, name FROM user_diary WHERE user_id = ?", (user_id,)).fetchall() + if diaries: + for d in diaries: + new_name = f"{d['name']}({target_name})" + conn.execute("UPDATE user_diary SET user_id = ?, name = ? WHERE id = ?", + (user["id"], new_name, d["id"])) snapshot = dict(target) conn.execute("DELETE FROM users WHERE id = ?", (user_id,)) + detail = dict(snapshot) + if diaries: + detail["transferred_diary_count"] = len(diaries) log_audit(conn, user["id"], "delete_user", "user", user_id, target["username"], - json.dumps(snapshot, ensure_ascii=False)) + json.dumps(detail, ensure_ascii=False)) conn.commit() conn.close() return {"ok": True}