Frontend+API: Namen ändern (POST /user/rename)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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(¤t); 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.
|
||||
|
||||
Reference in New Issue
Block a user