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 @@

+ + +
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");