Implement user account deletion flow

POST /user/delete (auth required) verifies the password via pass1 and
transactionally removes the user's sessions, votes, entries and the user
row, then clears the session cookie. Associated media files are removed
best effort after commit. This was only a stub in the Flask original.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 10:19:29 +02:00
parent cb237c248e
commit c904e3e2db
3 changed files with 79 additions and 5 deletions
+14 -3
View File
@@ -174,9 +174,21 @@ Eigene Account-Informationen.
---
### `GET /user/delete`
### `POST /user/delete`
Account löschen. (*Noch nicht implementiert.*)
Eigenen Account dauerhaft löschen. Beiträge, Votes und Sessions werden
mitgelöscht, zugehörige Mediendateien best effort entfernt.
**Auth:** erforderlich
**Request (form-encoded):**
| Feld | Typ | Beschreibung |
|------|-----|--------------|
| `pass1` | string | Passwort zur Bestätigung |
**Response:**
- `200` `{"status": "deleted"}` + löscht den `session`-Cookie
- `403` bei falschem Passwort
---
@@ -223,7 +235,6 @@ CREATE TABLE vote (
## Offene Punkte
- `/entry/:pid/interactions/:mode` ist auskommentiert — Voting-Logik muss neu designed werden
- `/user/delete` ist noch ein Stub
- Kein Rate-Limiting außer dem zufälligen `sleep` beim Login
- `session`-Token ist nur `randbelow(999999999) + timestamp` — sollte auf `crypto/rand` umgestellt werden
- Fehler-Responses sind aktuell Plaintext/HTML — in der Go-API einheitlich JSON