Passwort-Reset: Review-Fixes
- Token vor bcrypt prüfen, damit beliebige Tokens keine CPU-Last erzeugen - CLI meldet DB-Fehler nicht mehr als "Nutzer nicht gefunden" - Reset in einem Browser mit fremder Session räumt diese mit ab - Konto-Löschen entfernt auch offene Reset-Links Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
81a74375b7
commit
764ad50b8e
@@ -166,9 +166,10 @@ func handleSetAvatar(w http.ResponseWriter, r *http.Request) error {
|
||||
}
|
||||
|
||||
// handleUserDelete löscht den eingeloggten Account dauerhaft, nach Bestätigung
|
||||
// durch das Passwort (Formularfeld pass1). Sessions und Votes werden in einer
|
||||
// Transaktion mitgelöscht; die eigenen Beiträge werden soft-gelöscht (als
|
||||
// [deleted]-Platzhalter erhalten), damit fremde Antworten nicht verwaisen.
|
||||
// durch das Passwort (Formularfeld pass1). Sessions, Reset-Links und Votes
|
||||
// werden in einer Transaktion mitgelöscht; die eigenen Beiträge werden
|
||||
// soft-gelöscht (als [deleted]-Platzhalter erhalten), damit fremde Antworten
|
||||
// nicht verwaisen.
|
||||
// Zugehörige Mediendateien werden best effort entfernt.
|
||||
func handleUserDelete(w http.ResponseWriter, r *http.Request) error {
|
||||
uid := uidFromContext(r.Context())
|
||||
@@ -205,6 +206,7 @@ func handleUserDelete(w http.ResponseWriter, r *http.Request) error {
|
||||
}
|
||||
for _, q := range []string{
|
||||
`DELETE FROM session WHERE uid = $1`,
|
||||
`DELETE FROM password_reset WHERE uid = $1`,
|
||||
`DELETE FROM vote WHERE uid = $1`,
|
||||
`UPDATE entry SET deleted = 1, content = '', filepath = '', uid = 0 WHERE uid = $1`,
|
||||
`DELETE FROM account WHERE uid = $1`,
|
||||
|
||||
Reference in New Issue
Block a user