diff --git a/app.py b/app.py
index 327b929..4bbc38e 100644
--- a/app.py
+++ b/app.py
@@ -2433,23 +2433,7 @@ def _get_user_from_session(db) -> dict | None:
# ── HTML-Templates (plain strings, no f-string needed) ──────────────
-_REGISTER_TPL = """
-
-Registrieren — BSN Community
-
-
-
📋 Registrieren
+_REGISTER_CONTENT = """
📋 Registrieren
{error_html}
-
-
"""
+"""
-_LOGIN_TPL = """
-
-Login — BSN Community
-
-
-
🔐 Login
+_LOGIN_CONTENT = """
🔐 Login
{error_html}
-
-
"""
+"""
-_PROFILE_TPL = """
-
-Profil — BSN Community
-
-
-
👤 Mein Profil
-{msg_html}
-
-
-
-
-
"""
+_PROFILE_CONTENT = """👤 Profil
+Telefon: {phone}
+(Letzte 4 Ziffern: {phone_display})
+Abmelden """
@app.route("/register", methods=["GET", "POST"])
@@ -2538,14 +2476,14 @@ def user_register():
if is_email:
if db.execute("SELECT id FROM users WHERE email=?", (login_id,)).fetchone():
error = "Diese E-Mail ist bereits registriert."
- return _REGISTER_TPL.replace("{email_val}", login_id).replace("{error_html}",
- "" + error + "
")
+ return _overlay_page("Registrieren", _REGISTER_CONTENT.replace("{email_val}", login_id).replace("{error_html}",
+ "" + error + "
"), "400px")
else:
existing = _lookup_user_by_phone(db, login_id)
if existing:
error = "Diese Telefonnummer ist bereits registriert."
- return _REGISTER_TPL.replace("{email_val}", login_id).replace("{error_html}",
- "" + error + "
")
+ return _overlay_page("Registrieren", _REGISTER_CONTENT.replace("{email_val}", login_id).replace("{error_html}",
+ "" + error + "
"), "400px")
# User anlegen
pw_hash = _hash_password(password)
phone_hash_val = None
@@ -2570,7 +2508,7 @@ def user_register():
resp.set_cookie("bsn_session", token, max_age=30*86400, httponly=True)
return resp
login_id = request.form.get("email", "")
- return _REGISTER_TPL.replace("{email_val}", login_id).replace("{error_html}", "")
+ return _overlay_page("Registrieren", _REGISTER_CONTENT.replace("{email_val}", login_id).replace("{error_html}", ""), "400px")
@app.route("/login", methods=["GET", "POST"])
@@ -2596,7 +2534,7 @@ def user_login():
return resp
login_val = request.form.get("login_id", "")
error_html = "" + error + "
" if error else ""
- return _LOGIN_TPL.replace("{login_val}", login_val).replace("{error_html}", error_html)
+ return _overlay_page("Login", _LOGIN_CONTENT.replace("{login_val}", login_val).replace("{error_html}", error_html), "400px")
@app.route("/logout")
@@ -2629,9 +2567,9 @@ def user_profile():
msg_html = "" + msg + "
" if msg else ""
phone_display = "✱✱✱✱" + (user.get("phone_last4") or "") if user.get("phone_last4") else "nicht hinterlegt"
email_display = user.get("email") or "nicht hinterlegt"
- return _PROFILE_TPL.replace("{phone}", phone_display).replace("{phone_display}", phone_display)\
- .replace("{email}", email_display).replace("{name}", user["name"] or "")\
- .replace("{msg_html}", msg_html)
+ phone_display_str = "✱✱✱✱" + (user.get("phone_last4") or "") if user.get("phone_last4") else "nicht hinterlegt"
+ content = _PROFILE_CONTENT.replace("{phone}", phone_display_str).replace("{phone_display}", phone_display_str)
+ return _overlay_page("Profil", content, "400px")
@app.route("/")
@@ -3826,8 +3764,8 @@ def generate_image_thumbnail(image_path: str, width: int = 300) -> str | None:
# ── Legal pages ─────────────────────────────────────────────────────
-def _legal_page(title, content_html):
- """Render a legal page with BSN header/footer styling."""
+def _overlay_page(title, content_html, max_width="640px"):
+ """Overlay-Seite: Milchglas-Backdrop + zentrierte weiße Card. Gleicher Look wie Submit-Overlay."""
return f"""
@@ -3835,106 +3773,52 @@ def _legal_page(title, content_html):
{title} — BSN Community
-
+
-
-
+
"""
+def _legal_page(title, content_html):
+ """Legacy-Wrapper — nutzt jetzt _overlay_page."""
+ return _overlay_page(title, content_html)
+
+
@app.route("/impressum")
def legal_impressum():
return _legal_page("Impressum", """Impressum
@@ -4709,26 +4593,26 @@ def public_detail(sub_id: int):