PDF-Viewer-Modal fuer Bankkarte-/Ausweis-Dokument

Neue Komponente PdfViewerModal (Modal + iframe auf viewUrl(documentPath),
inkl. Neuer-Tab/Download-Links). Buttons:
- Vertragsansicht (ContractDetail): im Card-Header von Bankkarte/Ausweis
- Vertrag bearbeiten (ContractForm): neben dem Label Bankkarte/Ausweis

Button erscheint NUR wenn ein documentPath hinterlegt/gewaehlt ist. Nutzt den
bestehenden /api/files/download-Endpoint (Per-File-Ownership-Check) - kein
neuer Zugriffspfad. iframe (nicht embed/object wegen object-src 'none');
same-origin via CSP default-src 'self' erlaubt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 13:15:57 +02:00
co-authored by Claude Opus 4.8
parent b2b1cb3387
commit 06d51cf680
4 changed files with 141 additions and 3 deletions
+12
View File
@@ -97,6 +97,18 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **📄 PDF-Viewer-Modal für Bankkarte-/Ausweis-Dokument** (2026-08-13)
- Neue wiederverwendbare Komponente `PdfViewerModal` (Modal + `<iframe>` auf
`viewUrl(documentPath)`, inkl. „In neuem Tab" + „Herunterladen"). Nutzt den
bestehenden `/api/files/download`-Endpoint (Per-File-Ownership-Check) kein
neuer Zugriffspfad. `<iframe>` erlaubt via CSP `default-src 'self'`
(`object-src 'none'` bleibt, daher iframe statt embed/object).
- **Vertragsansicht** (ContractDetail): Button (FileText-Icon) im Card-Header
von „Bankkarte"/„Ausweis" **nur wenn `documentPath` gesetzt**.
- **Vertrag bearbeiten** (ContractForm): Button neben dem Label „Bankkarte"/
„Ausweis" **nur wenn die aktuell gewählte Karte/Ausweis ein `documentPath`
hat** (`e.preventDefault/stopPropagation`, da im `<label>`).
- [x] **📇 Vertragslisten: Karteninhaber + Mobilfunknetz + Kündigung (rot)** (2026-08-13)
- In **beiden** Vertragslisten (Kundenakte-Baum + Hauptmenü `/contracts`): bei
Mobilfunkverträgen mit Rufnummer zusätzlich **Karteninhaber** (`SimCard.cardUser`