# Admin-Passwort setzen

Dieses Script ermöglicht es, das Passwort für den Admin-User (`admin@harheimertc.de`) zu setzen oder zu ändern.

## Verwendung

### Mit Passwort als Argument

```bash
node scripts/set-admin-password.js "mein-neues-passwort"
```

### Interaktiv (Passwort wird abgefragt)

```bash
node scripts/set-admin-password.js
```

Das Script fragt dann nach dem neuen Passwort.

### Datei neu erstellen (bei Entschlüsselungsfehler)

Falls die `users.json` Datei nicht entschlüsselt werden kann (z.B. weil der `ENCRYPTION_KEY` nicht übereinstimmt), wird das Script automatisch fragen, ob die Datei neu erstellt werden soll. Sie können auch direkt das `--recreate` Flag verwenden:

```bash
node scripts/set-admin-password.js "mein-neues-passwort" --recreate
```

**Wichtig**: Die alte Datei wird automatisch als Backup gespeichert, bevor eine neue erstellt wird.

## Funktionen

- **Findet oder erstellt den Admin-User**: Falls der Admin-User nicht existiert, wird er automatisch erstellt
- **Passwort-Hashing**: Das Passwort wird mit bcrypt gehasht (10 Runden)
- **Verschlüsselte Speicherung**: Die Benutzerdaten werden verschlüsselt gespeichert
- **Validierung**: Prüft, dass das Passwort mindestens 8 Zeichen lang ist

## Voraussetzungen

- `ENCRYPTION_KEY` muss in der `.env` Datei gesetzt sein (für verschlüsselte Speicherung)
- Die Datei `server/data/users.json` muss existieren oder wird automatisch erstellt

## Beispiel

```bash
# Passwort direkt setzen
node scripts/set-admin-password.js "MeinSicheresPasswort123!"

# Interaktiv
node scripts/set-admin-password.js
# Eingabeaufforderung: Neues Passwort für admin@harheimertc.de: 
```

## Sicherheit

- Das Passwort wird niemals im Klartext gespeichert
- Es wird mit bcrypt gehasht (10 Runden)
- Die Benutzerdaten werden verschlüsselt gespeichert
- Das Passwort wird nicht in der Kommandozeilen-Historie gespeichert (bei interaktiver Eingabe)

## Fehlerbehandlung

Falls die Entschlüsselung der Benutzerdaten fehlschlägt:
- Prüfe, ob `ENCRYPTION_KEY` in der `.env` Datei korrekt gesetzt ist
- Stelle sicher, dass der Schlüssel mit dem übereinstimmt, der zum Verschlüsseln verwendet wurde

