feat(backend): Contact-Encrypt-Helper mit Regressionsschutz #323
No reviewers
Labels
No labels
component/backend
component/docs
component/e2e
component/frontend
component/infra
component/keycloak
prio/high
prio/low
prio/medium
type/bug
type/chore
type/feature
type/refactor
type/test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
WompSchmiede/FamilienFeierPlaner!323
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/contact-encrypt-helper"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
closes #313
Altes Verhalten
Jeder Endpunkt, der ContactData schreibt, musste
encrypt()auscrypto.tsmanuell importieren und jedes Feld einzeln verschluesseln (for-Loop oder einzelne Aufrufe). Ebenso wurdedecrypt()in mehreren Routes fuer ContactData direkt auscrypto.tsimportiert, jeweils mit eigener Nullpruefung und try/catch. Es gab keine automatische Pruefung, ob neue Dateien versehentlich wieder den direkten Weg gehen.Neues Verhalten
encryptContactData()undencryptAddressOnly()als Gegenstueck zucontact-decrypt.tsencrypt/decrypt-Import auscrypto.tsmehr fuer ContactDatacontact-encrypt.test.tsdeckt beide Funktionen ab (symmetrisch zucontact-decrypt.test.ts)project/no-direct-crypto-contactdataverhindert, dass neue Dateienencrypt/decryptauscrypto.tsfuer ContactData importieren. Explizite Allowlist fuer legitime Nicht-ContactData-Nutzungen (invoice-XML, crypto.ts selbst, Helper). Test-Dateien komplett ausgenommen.Begruendung
Redundanz vermeiden, einheitliche Verschluesselung erzwingen und Regression durch neue Entwickler (oder KI-Agents) automatisch abfangen.
Test-Hinweise
npm test(backend) laeuft gruen — 675 Tests, 37 Filesnpm run lint(backend) laeuft gruensrc/anlegt undimport { encrypt } from '../lib/crypto.js'schreibt, bekommt einen ESLint-Error mit eindeutiger MeldungCheckliste
use:testidan neuen<button>,<a>,<form>-Elementen gesetzt? — nicht relevante2e/specs/angelegt? — nicht relevant