Keycloak: Custom E-Mail-Theme fuer Einladungen (Frontend-Styling, executeActions) #203
Labels
No labels
component/backend
component/docs
component/e2e
component/frontend
component/infra
component/keycloak
prio/high
prio/low
prio/medium
type/bug
type/chore
type/feature
type/refactor
type/test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
WompSchmiede/FamilienFeierPlaner#203
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Was wir erreichen wollen
Die Einladungs-E-Mail, die aktuell beim
POST /api/v1/persons/:person_id/invite-Endpunkt via Keycloaksexecute-actions-email-API versendet wird, enthaelt nur den generischen Keycloak-Text "Update Your Account" ohne Bezug zur App.Ziel: Eine optisch ansprechende E-Mail im Stil des Frontends (lila/gold-Design), die:
Der "Passwort vergessen"-Flow bleibt dabei unveraendert, da Keycloak dafuer unabhaengige Message-Keys (
passwordReset*) verwendet.Wie wir es umsetzen
Keycloak verwendet fuer die
execute-actions-email-Admin-API die Message-KeysexecuteActionsSubject/executeActionsBody/executeActionsBodyHtml— unabhaengig vonpasswordReset*. Daher koennen wir die Einladungs-Mail isoliert anpassen, indem wir ein Email Theme im bestehenden Custom-Themefamilienfeierplaneranlegen.1. Email Theme anlegen (6 neue Dateien)
keycloak/themes/familienfeierplaner/email/theme.propertiesparent=keycloak.v2– erbt von Keycloaks Base-Email-Themekeycloak/themes/familienfeierplaner/email/html/template.ftl#9a47abprimary,#d4a61egold,#f9f0fbbg, Inter), Header ausrealm.displayName, Footerkeycloak/themes/familienfeierplaner/email/html/executeActions.ftl${realm.displayName!realmName}" + Button zum Passwort-Setzen + Ablauf-Hinweiskeycloak/themes/familienfeierplaner/email/text/executeActions.ftlkeycloak/themes/familienfeierplaner/email/messages/messages_en.propertiesexecuteActionsSubject=Welcome to {2} - Set your passwordkeycloak/themes/familienfeierplaner/email/messages/messages_de.propertiesexecuteActionsSubject=Willkommen bei {2} - Passwort setzen2. Backend anpassen (2 Dateien geaendert)
backend/src/lib/keycloak-provision.tsREALM_DEFAULTSumemailTheme: "familienfeierplaner"ergaenzen (neben bestehendemloginTheme/accountTheme)backend/src/routes/persons.ts(Z. 548-552)execute-actions-email-Call erweitern: statt nur['UPDATE_PASSWORD']ein Objekt senden mit:actions: ['UPDATE_PASSWORD']redirect_uri: process.env.FRONTEND_ORIGIN + '/app/dashboard'lifespan: 43200(12 Stunden)FRONTEND_ORIGINausprocess.envlesen (wird im Docker-Stack gesetzt)3. Config anpassen (1 Datei)
docker-compose.yml(backend-api service section)FRONTEND_ORIGIN: ${FRONTEND_ORIGIN:-http://localhost:5173}als Environment-Variable ergaenzen4. Tests anpassen (1 Datei)
backend/src/__tests__/persons.test.tsexecute-actions-email-Call anpassen: statt['UPDATE_PASSWORD']nun Objekt mitactions,redirect_uri,lifespanerwarten5. Dokumentation ergaenzen (2 Dateien)
docs/design/05-authentifizierung.md– Abschnitt "E-Mail-Theme" ergaenzen (analog zu Login-/Account-Theme)PROJECT_STATE.md– Status aktualisierenWarum kein Custom Keycloak-SPI / nodemailer
emailTheme) nutzt die bestehende Keycloak-Email-Infrastruktur und Aendert nur Look & FeelTechnische Randbedingungen
./keycloak/themes:/opt/keycloak/themesindocker-compose.ymldeckt das neueemail/-Verzeichnis automatisch abemailThemegesetzt (kein Volume-Mount fuer die Config noetig)realm.displayNameim FTL wird viaKEYCLOAK_REALM_DISPLAY_NAME-Env-Var gesteuert