feat(#143): Registrierungs-Bestätigungsmail an User direkt nach Anmeldung
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) <noreply@anthropic.com>
This commit is contained in:
parent
6581acd28e
commit
c1926ada4f
32
app/main.py
32
app/main.py
@ -1083,7 +1083,37 @@ async def auth_register(
|
|||||||
if create_resp.status_code != 201:
|
if create_resp.status_code != 201:
|
||||||
raise HTTPException(status_code=500, detail="Registrierung fehlgeschlagen")
|
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"<p>Hallo <strong>{anrede}</strong>,</p>"
|
||||||
|
f"<p>deine Registrierung am <a href=\"https://gwoe.toppyr.de/\">GWÖ-Antragsprüfer</a> ist eingegangen.</p>"
|
||||||
|
f"<p><strong>Was passiert jetzt?</strong></p>"
|
||||||
|
f"<ol>"
|
||||||
|
f"<li>Ein Admin schaltet deinen Account manuell frei.</li>"
|
||||||
|
f"<li>Du erhältst dann eine separate Mail mit einem Link zum Passwort-Setzen.</li>"
|
||||||
|
f"<li>Anschließend kannst du dich auf <a href=\"https://gwoe.toppyr.de/\">gwoe.toppyr.de</a> anmelden.</li>"
|
||||||
|
f"</ol>"
|
||||||
|
f"<p>Falls du nach 1-2 Werktagen nichts hörst, melde dich gerne unter <a href=\"mailto:mail@tobiasroedel.de\">mail@tobiasroedel.de</a>.</p>"
|
||||||
|
f"<p style=\"color:#666;font-size:0.9em\">Schöne Grüße<br>GWÖ-Antragsprüfer</p>"
|
||||||
|
)
|
||||||
|
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")
|
@app.get("/api/auth/pending-users")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user