Anbieter: Kontakt + Kündigung als Stammdaten
Sieben neue optionale Felder am Provider (contactEmail, contactPhone, contactFax, contactAddress, cancellationEmail, cancellationFax, cancellationAddress). Postadressen TEXT, Rest VARCHAR(191). Migration mit IF NOT EXISTS. Modal "Anbieter bearbeiten" bekommt neue Sektion "Kontakt & Kündigung" mit zwei Untergruppen. Backend validiert Emails gegen isValidEmail (Header-Injection-Schutz), Telefon/Fax gegen sanitizePhoneField (kein CRLF), Postadressen via sanitizeNotes mit 500-Cap. Factory-Defaults Export/Import mitgezogen. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,25 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🆕 Anbieter: Kontakt + Kündigung als Stammdaten**
|
||||
- Sieben neue optionale Felder am `Provider`-Modell: `contactEmail`,
|
||||
`contactPhone`, `contactFax`, `contactAddress`, `cancellationEmail`,
|
||||
`cancellationFax`, `cancellationAddress`. Postadressen als `TEXT`
|
||||
(mehrzeilig), Rest `VARCHAR(191)`. Migration
|
||||
`20260621100000_provider_contact_and_cancellation` mit `IF NOT EXISTS`.
|
||||
- Modal „Anbieter bearbeiten" bekommt eine neue Sektion **Kontakt &
|
||||
Kündigung** unterhalb der Auto-Login-Felder, getrennt in zwei
|
||||
Untergruppen (Kontakt / Kündigung) mit kleinen Headern.
|
||||
Email-/Telefon-/Fax-Felder als Single-Line-Inputs, Postadressen
|
||||
als `<textarea rows={3}>` mit `maxLength={500}`.
|
||||
- Backend-Validierung: contactEmail/cancellationEmail laufen durch
|
||||
`isValidEmail` (Header-Injection-Schutz für Mail-Templates),
|
||||
contactPhone/contactFax/cancellationFax durch `sanitizePhoneField`
|
||||
(kein CRLF/Control-Char), Postadressen durch `sanitizeNotes` mit
|
||||
500-Cap.
|
||||
- Factory-Defaults Export/Import mitgezogen, sonst gingen die neuen
|
||||
Felder beim Backup/Restore verloren.
|
||||
|
||||
- [x] **🔒 Pentest R87 – Whitelist vor Sanitizer (silent-mutation-Schutz)**
|
||||
- R87.1 (LOW): `stripHtml` lief im R86-Fix VOR der Whitelist.
|
||||
Tags wurden still weggestrippt → 200 OK mit mutierten Werten,
|
||||
|
||||
Reference in New Issue
Block a user