e10da76259
Administrator -> Willkommensmail: Betreff, Ueberschrift, Einleitung, Abschluss je
Mandant (Tabelle WelcomeMailTemplate, RLS je Mandant, Migration 20260930150000);
Platzhalter {{name}} {{vorname}} {{benutzername}} {{email}} {{adresse}} {{firma}},
unbekannte -> 400 bzw. Hinweis beim Tippen; Werte escaped, Vorlage reiner Text.
Live-Vorschau per API gerendert, Testmail an die eigene Adresse ohne Token,
Zuruecksetzen auf Standard. Feste Bausteine (Kopf, Zugangsdaten, Anmeldehinweis,
Knoepfe, Fusszeile) bleiben immer drin.
Kopf: Wellenzelle dunkel statt weiss, Streifen 600x40, Inhalt 24 px naeher –
keine weisse Luecke, wenn OWA das CID-Bild nicht zeigt.
Lokal nachgewiesen: Hinweis/Sperre bei {{xyz}}, Speichern, Testmail (Link nur
/login), echte Mail mit eigener Vorlage und 7-Tage-Link.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
28 lines
987 B
TypeScript
28 lines
987 B
TypeScript
'use client';
|
|
|
|
import { useTranslations } from 'next-intl';
|
|
import { WelcomeMailTemplateEditor } from '@/components/admin/welcome-mail-template-editor';
|
|
import { useAuthStore } from '@/lib/stores/auth-store';
|
|
|
|
/**
|
|
* Administrator → Willkommensmail: eigene Vorlage je Mandant (Betreff,
|
|
* Ueberschrift, Einleitung, Abschluss mit Platzhaltern). ADMIN und
|
|
* SUPER_ADMIN; die Rollenpruefung hier ist nur Anzeige — durchgesetzt wird
|
|
* sie serverseitig (`@Roles` an `/welcome-mail-template`).
|
|
*/
|
|
export default function AdminWelcomeMailPage() {
|
|
const tCommon = useTranslations('common');
|
|
const currentUser = useAuthStore((s) => s.user);
|
|
const hasAccess = currentUser?.role === 'ADMIN' || currentUser?.role === 'SUPER_ADMIN';
|
|
|
|
if (!hasAccess) {
|
|
return (
|
|
<div className="flex min-h-[60vh] items-center justify-center">
|
|
<p className="text-lg text-muted-foreground">{tCommon('accessDenied')}</p>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return <WelcomeMailTemplateEditor />;
|
|
}
|