diff --git a/web/css/app.css b/web/css/app.css
index 2732597..fd92213 100644
--- a/web/css/app.css
+++ b/web/css/app.css
@@ -74,6 +74,12 @@ button:hover { opacity: 0.9; }
.msg { color: #ff6b6b; font-size: 0.9rem; min-height: 1.2em; }
.switch { color: var(--muted); font-size: 0.9rem; margin: 0.6rem 0 0; }
.switch a { color: var(--accent); }
+
+#account-info { color: var(--muted); font-size: 0.9rem; }
+.danger summary { cursor: pointer; color: #ff6b6b; font-size: 0.9rem; }
+.danger form { margin-top: 0.6rem; }
+.danger p { color: var(--muted); font-size: 0.85rem; }
+#delete-form button { background: #c0392b; border-color: #c0392b; }
.end { text-align: center; color: var(--muted); padding: 2rem 0; }
.interactions {
diff --git a/web/index.html b/web/index.html
index 5c6c96e..fa85a73 100644
--- a/web/index.html
+++ b/web/index.html
@@ -46,6 +46,20 @@
+
+
+
+
+ Konto löschen
+
+
+
+
+
diff --git a/web/js/app.js b/web/js/app.js
index b5d5a0a..2e915dd 100644
--- a/web/js/app.js
+++ b/web/js/app.js
@@ -25,6 +25,7 @@ async function refreshHeader() {
const bar = document.getElementById("headerbar");
document.getElementById("auth-box").hidden = loggedIn;
document.getElementById("compose").hidden = !loggedIn;
+ document.getElementById("account").hidden = !loggedIn;
if (loggedIn) {
bar.innerHTML = ``;
@@ -32,12 +33,32 @@ async function refreshHeader() {
await api.get("/auth/logout");
await refreshHeader();
});
+ loadAccount();
} else {
bar.innerHTML = "";
showAuth("login");
}
}
+async function loadAccount() {
+ const info = await api.get("/user/info");
+ const since = new Date(info.created_at * 1000).toLocaleDateString("de-DE");
+ document.getElementById("account-info").textContent =
+ `Angemeldet als ${info.username} · Mitglied seit ${since}`;
+}
+
+document.getElementById("delete-form").addEventListener("submit", async (e) => {
+ e.preventDefault();
+ if (!confirm("Konto wirklich unwiderruflich löschen?")) return;
+ const res = await api.post("/user/delete", new FormData(e.target));
+ if (res.ok) {
+ await refreshHeader();
+ } else {
+ document.getElementById("delete-msg").textContent =
+ res.data.error || "Löschen fehlgeschlagen.";
+ }
+});
+
// --- Login / Registrierung ---
const loginForm = document.getElementById("login-form");
const registerForm = document.getElementById("register-form");