Stressfrei-Adressen: Duplikate beim Anlegen ablehnen
Bug: dieselbe E-Mail-Adresse konnte beim selben Kunden mehrfach angelegt werden – im Screenshot zwei identische Einträge nach einem Doppel-Submit. - createEmail: findFirst auf (customerId, email) case-insensitive, bei Treffer ApiError(409). Eigene Meldung für inaktive Duplikate (Hinweis: alten Eintrag reaktivieren statt neu anlegen). - updateEmail: gleicher Check beim Umbenennen, NOT id-Exclude. - Controller: catch-Blöcke honorieren ApiError.statusCode (vorher pauschal 400) → 409 kommt sauber an die UI durch. - Frontend: updateMutation bekam onError, damit der Fehler nicht schlucken bleibt.
This commit is contained in:
@@ -97,6 +97,20 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🐞 Stressfrei-Adressen: doppelte E-Mails beim Anlegen erlaubt**
|
||||
- Bug: User konnte dieselbe Adresse zweimal beim selben Kunden
|
||||
anlegen (siehe Screenshot mit 2× `max.mustermann@...`). `createEmail`
|
||||
hatte keinen Duplikatscheck, `updateEmail` ebenfalls nicht.
|
||||
- Service: Vor `prisma.create` jetzt `findFirst` auf
|
||||
`(customerId, email)` (case-insensitive). Bei Treffer → `ApiError(409)`.
|
||||
Unterschiedliche Meldung für aktive vs. inaktive Duplikate
|
||||
(Hinweis bei inaktiv: alten Eintrag reaktivieren statt neu anlegen).
|
||||
- `updateEmail`: gleicher Check beim Umbenennen, mit `NOT id`-Exclude.
|
||||
- Controller: `catch`-Blöcke honorieren jetzt den `ApiError.statusCode`
|
||||
(vorher pauschal 400) → 409 kommt sauber durch.
|
||||
- Frontend: `updateMutation` bekam ein `onError`, damit der 409 nicht
|
||||
nur ins Leere lief.
|
||||
|
||||
- [x] **🔒 Pentest 71.1–71.4: Härtung der Zusatz-Weiterleitungen**
|
||||
- **71.1 MEDIUM:** Reservierte/private TLDs (`local`, `internal`,
|
||||
`corp`, `lan`, `home`, `private`, `invalid`, `test`, `localhost`,
|
||||
|
||||
Reference in New Issue
Block a user