Frontend+API: Namen ändern (POST /user/rename)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 11:47:44 +02:00
parent 7ffc35808a
commit 844bbb44e7
5 changed files with 98 additions and 0 deletions
+32
View File
@@ -78,6 +78,38 @@ func handleUserInfo(w http.ResponseWriter, r *http.Request) {
})
}
// handleUserRename benennt den eingeloggten Account um. Nichts außer der user-Zeile
// referenziert den username (alles hängt an der uid), daher genügt ein UPDATE.
func handleUserRename(w http.ResponseWriter, r *http.Request) {
uid := uidFromContext(r.Context())
name := sanitizeUsername(r.FormValue("user"))
if len(name) < 3 {
writeError(w, http.StatusBadRequest, "Der Nutzername ist zu kurz.")
return
}
var current string
if err := db.QueryRow(`SELECT username FROM user WHERE uid = ?`, uid).Scan(&current); err != nil {
writeError(w, http.StatusNotFound, "Nutzer nicht gefunden")
return
}
if name == current {
writeError(w, http.StatusBadRequest, "Das ist bereits dein Name.")
return
}
if idFromUsername(name) != 0 {
writeError(w, http.StatusConflict, "Der Nutzername wird bereits verwendet.")
return
}
if _, err := db.Exec(`UPDATE user SET username = ? WHERE uid = ?`, name, uid); err != nil {
writeError(w, http.StatusInternalServerError, "Umbenennen fehlgeschlagen")
return
}
writeJSON(w, http.StatusOK, map[string]string{"username": name})
}
// handleUserDelete löscht den eingeloggten Account dauerhaft, nach Bestätigung
// durch das Passwort (Formularfeld pass1). Beiträge, Votes und Sessions werden
// in einer Transaktion mitgelöscht; zugehörige Mediendateien best effort entfernt.