M8: Datenexport pro Mandant
Neue Seite datenexport.php (Owner/Admin) laedt einen vollstaendigen JSON-Export des eigenen Mandanten herunter: Stammdaten, Einstellungen, Teilnehmer, Mitglieder mit Rolle, alle Ledger-Buchungen, Hinweise, CSV-Importe, Mail-Versandlog und Admin-Protokoll. Passwort- und Token-Hashes werden bewusst nicht exportiert; der Export selbst wird im Audit-Log protokolliert. Link von konto.php aus. Live getestet: eigens angelegter Test-Mandant, Export heruntergeladen, Header und JSON-Struktur geprueft, keine Passwoerter im Export gefunden. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+26
-2
@@ -124,18 +124,42 @@ erwarteten Rollenliste übereinstimmt.
|
||||
Ergebnis: grün mit 55 Assertions (5 Rollen × 11 Seiten). Räumt die
|
||||
Testdaten am Ende selbst auf.
|
||||
|
||||
## Datenexport pro Mandant
|
||||
|
||||
Umgesetzte Dateien:
|
||||
|
||||
```text
|
||||
app/data-export.php
|
||||
datenexport.php
|
||||
konto.php
|
||||
scripts/http-smoke.php
|
||||
```
|
||||
|
||||
- Neue Seite `datenexport.php` (Owner/Admin, echte SaaS-Session nötig)
|
||||
lädt einen vollständigen JSON-Export des eigenen Mandanten herunter:
|
||||
Tenant-Stammdaten, Einstellungen, Teilnehmer, Mitglieder mit Rolle,
|
||||
alle Ledger-Buchungen, Hinweise, CSV-Importe (Batches und Zeilen),
|
||||
Mail-Versandlog und Admin-Protokoll.
|
||||
- Passwort-Hashes und Token-Hashes werden bewusst nicht exportiert.
|
||||
- Der Export selbst wird im Audit-Log protokolliert
|
||||
(`tenant_data.exported`).
|
||||
- Link von `konto.php` aus neben „Mandant-Einstellungen".
|
||||
- Live getestet: eigens angelegter Test-Mandant, Export heruntergeladen,
|
||||
Header (`Content-Type`, `Content-Disposition`) und JSON-Struktur
|
||||
geprüft, verifiziert dass keine Passwörter enthalten sind. Testdaten
|
||||
anschließend entfernt.
|
||||
|
||||
## Prüfstatus
|
||||
|
||||
- Golden Master: grün mit 104 Assertions.
|
||||
- M4 Ledger-Migration: grün mit 73 Assertions.
|
||||
- M3 Settings-Flow: grün mit 13 Assertions.
|
||||
- HTTP-Smoke: grün mit 26 geprüften Seiten.
|
||||
- HTTP-Smoke: grün mit 27 geprüften Seiten.
|
||||
- M8 Mandanten-Isolation: grün mit 10 Assertions.
|
||||
- M8 Rollenmatrix: grün mit 55 Assertions.
|
||||
|
||||
## Noch offen in M8
|
||||
|
||||
- Content-Security-Policy (braucht Template-Bereinigung der Inline-Styles).
|
||||
- Datenexport pro Mandant.
|
||||
- Lösch-/Anonymisierungsprozess für Teilnehmer und Kunden.
|
||||
- Backup-/Restore-Prozess und Monitoring/Fehlerlogging dokumentieren.
|
||||
|
||||
@@ -647,7 +647,11 @@ Schritte:
|
||||
protokolliert Mitgliederverwaltung, Storno, Mandant-Einstellungen,
|
||||
Hinweise, CSV-Import, Jahresbonus und Live-Mailversand; sichtbar für
|
||||
Owner/Admin auf `mandant-einstellungen.php`.
|
||||
- Datenexport pro Tenant.
|
||||
- Datenexport pro Tenant: erledigt.
|
||||
`datenexport.php` liefert Owner/Admin einen vollständigen JSON-Export
|
||||
des eigenen Mandanten (Stammdaten, Teilnehmer, Mitglieder/Rollen,
|
||||
Buchungen, Hinweise, Importe, Mail-Log, Admin-Protokoll) ohne
|
||||
Passwörter, protokolliert im Audit-Log.
|
||||
- Lösch-/Anonymisierungsprozess für Teilnehmer und Kunden.
|
||||
- Rate-Limits und Security Headers: erledigt. Globale Security-Headers
|
||||
über `app/bootstrap.php` (ohne CSP, siehe `docs/m8-haertung.md`),
|
||||
|
||||
Reference in New Issue
Block a user