Add dotenv package for environment variable management and refactor SMTP credential handling in email services. Enhance error handling for missing SMTP credentials across various API endpoints to improve reliability and maintainability.

This commit is contained in:
Torsten Schulz (local)
2025-12-18 12:19:23 +01:00
parent 1a093340ab
commit 680629e1f8
12 changed files with 492 additions and 95 deletions

View File

@@ -0,0 +1,66 @@
# Daten-Neuverschlüsselung
Dieses Script verschlüsselt alle verschlüsselten Daten mit einem neuen Schlüssel neu.
## Verwendung
### Voraussetzungen
1. Stelle sicher, dass `ENCRYPTION_KEY` in der `.env` Datei gesetzt ist:
```bash
ENCRYPTION_KEY=dein-neuer-sicherer-schlüssel-hier
```
2. Optional: Wenn du einen spezifischen alten Schlüssel verwendest (nicht den Standard), kannst du ihn angeben:
```bash
node scripts/re-encrypt-data.js --old-key="dein-alter-schlüssel"
```
### Ausführung
```bash
node scripts/re-encrypt-data.js
```
## Was wird neu verschlüsselt?
Das Script verarbeitet folgende Dateien:
1. **`server/data/users.json`** - Benutzerdaten
2. **`server/data/members.json`** - Mitgliederdaten
3. **`server/data/membership-applications/*.json`** - Mitgliedschaftsanträge (wenn sie ein `encryptedData` Feld enthalten)
4. **`server/data/membership-applications/*.data`** - Verschlüsselte Antragsdaten
## Sicherheit
- **Automatische Backups**: Vor jeder Änderung werden Backups im Verzeichnis `backups/re-encrypt-<timestamp>/` erstellt
- **Mehrere Schlüssel**: Das Script versucht automatisch verschiedene alte Standard-Schlüssel:
- `default-key-change-in-production`
- `local_development_encryption_key_change_in_production`
- Ein optional angegebener `--old-key` Parameter
## Beispiel
```bash
# Standard-Ausführung (verwendet Standard-Entwicklungsschlüssel)
node scripts/re-encrypt-data.js
# Mit spezifischem altem Schlüssel
node scripts/re-encrypt-data.js --old-key="mein-alter-produktions-schlüssel"
```
## Fehlerbehandlung
Falls die Entschlüsselung mit allen verfügbaren Schlüsseln fehlschlägt:
- Das Script bricht ab
- Alle Backups bleiben erhalten
- Du kannst die Dateien manuell aus den Backups wiederherstellen
## Wichtig
⚠️ **WICHTIG**: Stelle sicher, dass:
- Die `.env` Datei den neuen `ENCRYPTION_KEY` enthält
- Du ein Backup der Daten hast (wird automatisch erstellt)
- Der Server während der Ausführung nicht läuft
- Du nach der Ausführung testest, ob alles funktioniert