diff --git a/backend/00-router.go b/backend/00-router.go
index 2d3f4db..6a53f86 100644
--- a/backend/00-router.go
+++ b/backend/00-router.go
@@ -17,6 +17,8 @@ func RegisterRoutes(mux *http.ServeMux) {
mux.HandleFunc("/", homeHandler)
mux.HandleFunc("/login", loginHandler)
mux.HandleFunc("/logout", logoutHandler)
+ mux.HandleFunc("/password/forgot", forgotPasswordHandler)
+ mux.HandleFunc("/password/reset", resetPasswordHandler)
mux.HandleFunc("/users", usersHandler)
mux.HandleFunc("/users/save", userSaveHandler)
mux.HandleFunc("/users/toggle-active", userToggleActiveHandler)
@@ -64,9 +66,9 @@ func renderShell(w http.ResponseWriter, active, readingPane string) {
fmt.Fprintf(w, `
Mail-Graveyard
-
+
-
+
@@ -384,6 +386,7 @@ func userSaveHandler(w http.ResponseWriter, r *http.Request) {
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
return
}
+ oldUsername := strings.TrimSpace(r.FormValue("old_username"))
username := strings.TrimSpace(r.FormValue("username"))
displayName := strings.TrimSpace(r.FormValue("display_name"))
password := r.FormValue("password")
@@ -393,9 +396,13 @@ func userSaveHandler(w http.ResponseWriter, r *http.Request) {
redirectUsers(w, r, "", "Benutzername fehlt.")
return
}
- existing, existingErr := GetAppUser(username)
+ lookupUsername := username
+ if oldUsername != "" {
+ lookupUsername = oldUsername
+ }
+ existing, existingErr := GetAppUser(lookupUsername)
if !IsAdmin(r) && existingErr == nil && existing.Role != roleUser {
- redirectUsers(w, r, username, "Nur Admins duerfen Verwalter oder Admins bearbeiten.")
+ redirectUsers(w, r, oldUsername, "Nur Admins duerfen Verwalter oder Admins bearbeiten.")
return
}
if !IsAdmin(r) {
@@ -414,8 +421,8 @@ func userSaveHandler(w http.ResponseWriter, r *http.Request) {
return
}
}
- if err := SaveAppUser(username, displayName, hash, role, active); err != nil {
- redirectUsers(w, r, username, err.Error())
+ if err := UpdateAppUser(oldUsername, username, displayName, hash, role, active); err != nil {
+ redirectUsers(w, r, oldUsername, err.Error())
return
}
redirectUsers(w, r, username, "Benutzer gespeichert.")
@@ -504,9 +511,9 @@ func renderAccountsPage(w http.ResponseWriter, accounts []Account, edit Account,
fmt.Fprintf(w, `
Konten-Verwaltung - Mail-Graveyard
-
+
-
+
@@ -549,9 +556,9 @@ func renderArchivesPage(w http.ResponseWriter, archives []string, accounts []Acc
fmt.Fprintf(w, `
Archiv-mbox Verwaltung - Mail-Graveyard
-
+
-
+
@@ -597,9 +604,9 @@ func renderUsersPage(w http.ResponseWriter, r *http.Request, users []AppUser, ed
fmt.Fprintf(w, `
Benutzerverwaltung - Mail-Graveyard
-
+
-
+
@@ -667,9 +674,9 @@ func renderTransferPage(w http.ResponseWriter, mode transferMode, accounts []Acc
fmt.Fprintf(w, `
%s - Mail-Graveyard
-
+
-
+
@@ -708,9 +715,9 @@ func renderSourceEmailBoxPage(w http.ResponseWriter, accounts []Account) {
fmt.Fprintf(w, `
Quell-Postfach - Mail-Graveyard
-
+
-
+