Bugfixes: Adresse-Modal + Upload-Limit auf 25 MB

1. AddressModal: Straße-Feld ließ sich nicht editieren. setFormData
   wurde im Render-Body aufgerufen, wenn formData.street !==
   address.street → Reset bei jedem Tastendruck. In useEffect mit
   [address?.id]-Dependency umgezogen.

2. Multer-Limit von 10 MB auf 25 MB in upload.routes.ts,
   gdpr.routes.ts, contract.routes.ts. Zwei Handy-Fotos zu PDF
   kratzten am alten Limit. FileUpload-Hinweistext angepasst.
This commit is contained in:
2026-06-03 16:37:09 +02:00
parent 5508d59652
commit 7c18343a95
6 changed files with 28 additions and 7 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ const docUpload = multer({
if (allowed.includes(file.mimetype)) cb(null, true);
else cb(new Error('Nur PDF, JPG, PNG, GIF oder WebP-Dateien sind erlaubt'));
},
limits: { fileSize: 10 * 1024 * 1024 },
limits: { fileSize: 25 * 1024 * 1024 },
});
router.get('/', authenticate, requirePermission('contracts:read'), contractController.getContracts);
+1 -1
View File
@@ -28,7 +28,7 @@ const authUpload = multer({
cb(new Error('Nur PDF-Dateien sind erlaubt'));
}
},
limits: { fileSize: 10 * 1024 * 1024 },
limits: { fileSize: 25 * 1024 * 1024 },
});
// Alle Routen erfordern Authentifizierung
+4 -1
View File
@@ -83,7 +83,10 @@ const upload = multer({
storage,
fileFilter,
limits: {
fileSize: 10 * 1024 * 1024, // 10MB max
// 25 MB passt für Ausweis-Scans, Handy-Photos im JpgToPdf-Flow,
// mehrseitige PDFs aus dem Modal (bis ~5-7 Seiten je nach Auflösung).
// Vorher 10 MB → Multer brach bei zwei Smartphone-Fotos ab.
fileSize: 25 * 1024 * 1024,
},
});
+15
View File
@@ -97,6 +97,21 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🐞 AddressModal: Straße-Feld ließ sich nicht editieren**
- `setFormData` wurde unbedingt im Render-Body aufgerufen, wenn
`formData.street !== address.street`. Jeder Tastendruck löste neu
aus → Reset auf DB-Wert → Cursor sprang zurück → keine Eingabe
möglich.
- Fix: in `useEffect` mit `[address?.id]`-Dependency umgezogen.
Re-Init nur beim Wechsel/Open, nicht bei jedem Render.
- [x] **🐞 Upload-Limit: Multer 10 MB → 25 MB (Ausweis-Scans, JPGs→PDF)**
- Zwei Smartphone-Fotos zu PDF kombiniert kratzten am 10-MB-Limit
(auch mit Original-Bytes-Optimierung aus 431792e). Limits in
`upload.routes.ts`, `gdpr.routes.ts`, `contract.routes.ts` auf
25 MB hochgezogen. `pdfTemplate.routes.ts` war eh schon bei 20 MB.
- Frontend: `FileUpload`-Hinweis „max. 10 MB" → „max. 25 MB".
- [x] **🆕 SIM-Karten: Checkbox „eSIM" zwischen „Hauptkarte" und „Multisim"**
- Hardware-Plastikkarte vs. eSIM-Profil ist eine eigene Eigenschaft
eSIM kann sowohl Hauptkarte als auch Multisim sein, also zusätzlich
+1 -1
View File
@@ -119,7 +119,7 @@ export default function FileUpload({
<>
<Upload className="w-6 h-6 text-gray-400 mx-auto mb-2" />
<p className="text-sm text-gray-600">{label}</p>
<p className="text-xs text-gray-400 mt-1">PDF, JPG oder PNG (max. 10MB)</p>
<p className="text-xs text-gray-400 mt-1">PDF, JPG oder PNG (max. 25 MB)</p>
</>
)}
</div>
@@ -2451,10 +2451,13 @@ function AddressModal({
const isPending = createMutation.isPending || updateMutation.isPending;
// Update form when address prop changes
if (isEditing && formData.street !== address.street) {
// Beim Öffnen / Wechsel zwischen Adressen aus den Props re-initialisieren.
// Vorher als unbedingte if-setState im Render-Body → Reset bei jedem
// Tastendruck, Straße ließ sich nicht eintippen.
useEffect(() => {
setFormData(getInitialFormData());
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [address?.id]);
return (
<Modal isOpen={isOpen} onClose={onClose} title={isEditing ? 'Adresse bearbeiten' : 'Adresse hinzufügen'}>