From c1926ada4fb309baa5e35bae9359d6dc3cb655c1 Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Mon, 27 Apr 2026 23:40:04 +0200 Subject: [PATCH] =?UTF-8?q?feat(#143):=20Registrierungs-Best=C3=A4tigungsm?= =?UTF-8?q?ail=20an=20User=20direkt=20nach=20Anmeldung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vorher: User registriert -> Keycloak-User mit enabled=false angelegt -> KEINE Mail bis Admin manuell freischaltet. UX-Luecke: User weiss zwischen Klick und Admin-Freischaltung nicht, ob etwas passiert ist. Jetzt: nach erfolgreichem Keycloak-User-Create wird sofort eine Bestaetigungs- Mail an die angegebene Adresse geschickt mit Hinweis auf den 3-Schritt-Flow (Anmeldung -> Admin-Freischaltung -> Passwort-Setzen-Mail). Plain-Text + HTML. Fehler beim Mail-Versand wird geloggt aber nicht weitergereicht — User-Anlage ist davon unabhaengig. Response-Message angepasst: 'Wir haben dir eine Bestaetigung per E-Mail geschickt.' Co-Authored-By: Claude Opus 4.7 (1M context) --- app/main.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/app/main.py b/app/main.py index b4bce50..37b2476 100644 --- a/app/main.py +++ b/app/main.py @@ -1083,7 +1083,37 @@ async def auth_register( if create_resp.status_code != 201: raise HTTPException(status_code=500, detail="Registrierung fehlgeschlagen") - return {"status": "pending_approval", "message": "Registrierung eingegangen. Nach Freischaltung erhalten Sie eine E-Mail zum Passwort setzen."} + # #143: Bestätigungsmail an User direkt nach Anmeldung + try: + from .mail import send_mail + anrede = f"{firstName} {lastName}".strip() or username + text_body = ( + f"Hallo {anrede},\n\n" + f"deine Registrierung am GWÖ-Antragsprüfer ist eingegangen.\n\n" + f"Was passiert jetzt?\n" + f" 1. Ein Admin schaltet deinen Account manuell frei.\n" + f" 2. Du erhältst dann eine separate Mail mit einem Link zum Passwort-Setzen.\n" + f" 3. Anschließend kannst du dich auf https://gwoe.toppyr.de/ anmelden.\n\n" + f"Falls du nach 1-2 Werktagen nichts hörst, melde dich gerne unter mail@tobiasroedel.de.\n\n" + f"Schöne Grüße\nGWÖ-Antragsprüfer" + ) + html_body = ( + f"

Hallo {anrede},

" + f"

deine Registrierung am GWÖ-Antragsprüfer ist eingegangen.

" + f"

Was passiert jetzt?

" + f"
    " + f"
  1. Ein Admin schaltet deinen Account manuell frei.
  2. " + f"
  3. Du erhältst dann eine separate Mail mit einem Link zum Passwort-Setzen.
  4. " + f"
  5. Anschließend kannst du dich auf gwoe.toppyr.de anmelden.
  6. " + f"
" + f"

Falls du nach 1-2 Werktagen nichts hörst, melde dich gerne unter mail@tobiasroedel.de.

" + f"

Schöne Grüße
GWÖ-Antragsprüfer

" + ) + await send_mail(email, "GWÖ-Antragsprüfer — Registrierung eingegangen", text_body, html_body) + except Exception: + logger.exception("Bestätigungsmail an %s fehlgeschlagen — User-Anlage war aber erfolgreich", email) + + return {"status": "pending_approval", "message": "Registrierung eingegangen. Wir haben dir eine Bestätigung per E-Mail geschickt."} @app.get("/api/auth/pending-users")