-- Willkommensmail: eigene Vorlage je Mandant (Administrator → Willkommensmail). -- -- Zweck: neue Tabelle "WelcomeMailTemplate". Ein Administrator kann Betreff, -- Ueberschrift, Einleitung und Abschlusstext der Willkommensmail anpassen -- (mit Platzhaltern wie {{name}}). Hoechstens EINE Zeile je Mandant -- ("tenantId" eindeutig); "Auf Standard zuruecksetzen" loescht die Zeile, dann -- gelten wieder die Standardtexte aus dem Code. Die festen Bausteine der Mail -- (Kopf, Zugangsdaten, Anmeldehinweis, Knoepfe, Fusszeile) stehen NICHT in -- der Tabelle. "updatedBy" haelt den Benutzernamen des letzten Bearbeiters -- als reinen Anzeigetext (keine Relation). -- -- Von Hand geschrieben (Vorbild 20260929120000_custom_module). -- -- Zeilenschutz (Pflicht — sonst schlaegt rls-coverage.spec.ts fehl): die -- Tabelle traegt `tenantId` und `tenant_isolation_policy` OHNE -- Benutzerdimension (`USING ("tenantId" = current_tenant_id())`) — die -- Vorlage ist Verwaltungsdatum des Mandanten, nicht persoenliches Datum eines -- einzelnen Benutzers. -- -- BEWUSST KEINE `system_read_policy`: gelesen wird nur beim Versand einer -- Willkommensmail, und zwar gebunden an den Mandanten des Zielbenutzers -- (`forTenant(prisma, tenantId)`); es gibt keinen Hintergrunddienst, der die -- Vorlagen ueber alle Mandanten liest. -- -- Rechte fuer die Anwendungsrolle tessera_app kommen automatisch ueber -- ALTER DEFAULT PRIVILEGES aus 20260909130000_rls_app_role — hier nichts zu -- tun. -- -- WICHTIG: wie alle bisherigen RLS-Migrationen wirken diese Regeln erst, -- wenn die Anwendung als Rolle ohne Umgehungsrecht verbindet (Schalter -- heute AUS, siehe docs/mandantentrennung-datenbankrolle.md). CREATE TABLE "WelcomeMailTemplate" ( "id" TEXT NOT NULL, "tenantId" TEXT NOT NULL, "subject" TEXT NOT NULL, "heading" TEXT NOT NULL, "intro" TEXT NOT NULL, "closing" TEXT NOT NULL, "updatedBy" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "WelcomeMailTemplate_pkey" PRIMARY KEY ("id") ); CREATE UNIQUE INDEX "WelcomeMailTemplate_tenantId_key" ON "WelcomeMailTemplate"("tenantId"); ALTER TABLE "WelcomeMailTemplate" ENABLE ROW LEVEL SECURITY; ALTER TABLE "WelcomeMailTemplate" FORCE ROW LEVEL SECURITY; CREATE POLICY tenant_isolation_policy ON "WelcomeMailTemplate" USING ("tenantId" = current_tenant_id());