feat(users): Willkommensmail mit Wellen-Kopf und Logo, Spalte Letzte Anmeldung
Tessera CI/CD / Lint & Type Check (push) Successful in 48s
Tessera CI/CD / Tests (push) Successful in 1m18s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 18s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m11s

POST /users/:id/welcome-mail (gleiche Rechte wie Bearbeiten, jederzeit sendbar),
GET /users/welcome-mail/status; HTML-Mail (Tabellenlayout, Inline-Stile,
Kopfbild als CID-PNG aus assets/mail/welcome-header.svg, erzeugt mit
scripts/render-mail-header.mjs) plus Textfassung. Verzeichniskonten: Hinweis
auf Windows-Passwort; lokale Konten: Link Passwort festlegen (7 Tage, einmalig).
Neue Spalte User.welcomeMailSentAt (Migration 20260930120000). Benutzerliste:
Spalte Letzte Anmeldung, Zeilenaktionen als Symbole. Dockerfile kopiert
apps/api/assets. Lokal per MailHog nachgewiesen.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-30 15:28:52 +02:00
parent 0b34e82b21
commit 32441d77c7
24 changed files with 1540 additions and 115 deletions
+16
View File
@@ -535,6 +535,8 @@
"displayName": "Anzeigename",
"role": "Rolle",
"status": "Status",
"lastLogin": "Letzte Anmeldung",
"neverLoggedIn": "Noch nie",
"actions": "Aktionen",
"password": "Passwort",
"noUsers": "Keine Benutzer gefunden",
@@ -557,6 +559,20 @@
"generic": "Die Aktion konnte nicht durchgeführt werden. Bitte erneut versuchen.",
"network": "Der Server ist nicht erreichbar. Bitte erneut versuchen.",
"loadFailed": "Die Benutzerliste konnte nicht geladen werden. Bitte laden Sie die Seite neu."
},
"welcomeMail": {
"button": "Willkommensmail senden",
"resend": "Erneut senden",
"sentAt": "Willkommensmail gesendet am {date}",
"noEmail": "Keine E-Mail-Adresse hinterlegt – bitte zuerst eine Adresse eintragen.",
"noSmtp": "Es ist noch kein SMTP-Server eingerichtet (Administrator → SMTP).",
"inactive": "Das Konto ist deaktiviert.",
"dialogTitle": "Willkommensmail senden",
"dialogText": "Tessera schickt eine Willkommensmail mit Adresse, Benutzername und Hinweisen zur ersten Anmeldung an:",
"dialogResend": "Eine Willkommensmail wurde bereits am {date} gesendet. Sie wird erneut verschickt.",
"send": "Senden",
"sending": "Wird gesendet …",
"success": "Die Willkommensmail an {email} wurde gesendet."
}
},
"tenants": {