impressum datenschutz added

This commit is contained in:
2026-03-25 15:25:34 +01:00
parent 219e1930f7
commit eaa94e766a
12 changed files with 493 additions and 3 deletions
@@ -421,6 +421,50 @@ export async function updateAuthorizationTemplate(req: AuthRequest, res: Respons
}
}
// ==================== IMPRESSUM & WEBSITE-DATENSCHUTZ ====================
export async function getImprint(req: AuthRequest, res: Response) {
try {
const html = await appSettingService.getSetting('imprintHtml');
res.json({ success: true, data: { html: html || '' } });
} catch (error) {
res.status(500).json({ success: false, error: 'Fehler beim Abrufen' });
}
}
export async function updateImprint(req: AuthRequest, res: Response) {
try {
const { html } = req.body;
if (typeof html !== 'string') return res.status(400).json({ success: false, error: 'HTML-Inhalt erforderlich' });
await appSettingService.setSetting('imprintHtml', html);
await logChange({ req, action: 'UPDATE', resourceType: 'AppSetting', label: 'Impressum aktualisiert' });
res.json({ success: true, message: 'Impressum gespeichert' });
} catch (error) {
res.status(500).json({ success: false, error: 'Fehler beim Speichern' });
}
}
export async function getWebsitePrivacyPolicy(req: AuthRequest, res: Response) {
try {
const html = await appSettingService.getSetting('websitePrivacyPolicyHtml');
res.json({ success: true, data: { html: html || '' } });
} catch (error) {
res.status(500).json({ success: false, error: 'Fehler beim Abrufen' });
}
}
export async function updateWebsitePrivacyPolicy(req: AuthRequest, res: Response) {
try {
const { html } = req.body;
if (typeof html !== 'string') return res.status(400).json({ success: false, error: 'HTML-Inhalt erforderlich' });
await appSettingService.setSetting('websitePrivacyPolicyHtml', html);
await logChange({ req, action: 'UPDATE', resourceType: 'AppSetting', label: 'Website-Datenschutzerklärung aktualisiert' });
res.json({ success: true, message: 'Website-Datenschutzerklärung gespeichert' });
} catch (error) {
res.status(500).json({ success: false, error: 'Fehler beim Speichern' });
}
}
// ==================== SEND CONSENT LINK ====================
/**
+8
View File
@@ -60,6 +60,14 @@ router.put('/privacy-policy', requirePermission('gdpr:admin'), gdprController.up
router.get('/authorization-template', requirePermission('gdpr:admin'), gdprController.getAuthorizationTemplate);
router.put('/authorization-template', requirePermission('gdpr:admin'), gdprController.updateAuthorizationTemplate);
// Impressum (Editor + Portal-Anzeige)
router.get('/imprint', gdprController.getImprint);
router.put('/imprint', requirePermission('gdpr:admin'), gdprController.updateImprint);
// Website-Datenschutzerklärung (Editor + Portal-Anzeige)
router.get('/website-privacy-policy', gdprController.getWebsitePrivacyPolicy);
router.put('/website-privacy-policy', requirePermission('gdpr:admin'), gdprController.updateWebsitePrivacyPolicy);
// Consent-Link senden
router.post('/customer/:customerId/send-consent-link', requirePermission('customers:update'), gdprController.sendConsentLink);