Frontend: Registrierung angebunden (POST /auth/newuser)

- Umschalter Login <-> Registrieren im Auth-Bereich
- Fehlerlisten-Anzeige ({"errors": [...]}) fuer newuser
- nach erfolgreicher Registrierung automatischer Login
- Logout setzt Ansicht auf Login zurueck

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 11:47:00 +02:00
parent 2ab08ebf9a
commit a47f41bbfa
3 changed files with 55 additions and 5 deletions
+42 -5
View File
@@ -34,22 +34,59 @@ async function refreshHeader() {
});
} else {
bar.innerHTML = "";
showAuth("login");
}
}
// --- Login ---
document.getElementById("login-form").addEventListener("submit", async (e) => {
// --- Login / Registrierung ---
const loginForm = document.getElementById("login-form");
const registerForm = document.getElementById("register-form");
const authMsg = document.getElementById("auth-msg");
function showAuth(which) {
loginForm.hidden = which !== "login";
registerForm.hidden = which !== "register";
authMsg.textContent = "";
}
document.getElementById("show-register").addEventListener("click", (e) => {
e.preventDefault();
showAuth("register");
});
document.getElementById("show-login").addEventListener("click", (e) => {
e.preventDefault();
showAuth("login");
});
loginForm.addEventListener("submit", async (e) => {
e.preventDefault();
const res = await api.post("/auth/login", new FormData(e.target));
const msg = document.getElementById("auth-msg");
if (res.ok) {
msg.textContent = "";
await refreshHeader();
} else {
msg.textContent = res.data.error || "Login fehlgeschlagen.";
authMsg.textContent = res.data.error || "Login fehlgeschlagen.";
}
});
registerForm.addEventListener("submit", async (e) => {
e.preventDefault();
const data = new FormData(e.target);
const res = await api.post("/auth/newuser", data);
if (!res.ok) {
// newuser liefert eine Fehlerliste ({"errors": [...]}).
const errors = res.data.errors || [res.data.error || "Registrierung fehlgeschlagen."];
authMsg.textContent = errors.join(" ");
return;
}
// Direkt mit denselben Daten einloggen, damit der Nutzer gleich drin ist.
const login = new FormData();
login.append("user", data.get("user"));
login.append("pass", data.get("pass1"));
login.append("timeout", "86400");
await api.post("/auth/login", login);
await refreshHeader();
});
// --- Neuer Beitrag ---
document.getElementById("entry-form").addEventListener("submit", async (e) => {
e.preventDefault();