# 🔐 Authentifizierung & Mitgliederbereich

## Standard-Login

**E-Mail:** `admin@harheimertc.de`  
**Passwort:** `admin123`

⚠️ **WICHTIG:** Ändern Sie dieses Passwort sofort nach der ersten Anmeldung!

## Admin-Passwort setzen

Das einfachste Verfahren ist das Script `scripts/set-admin-password.js`:

```bash
# Mit Passwort als Argument
node scripts/set-admin-password.js "mein-neues-passwort"

# Oder interaktiv (Passwort wird abgefragt)
node scripts/set-admin-password.js
```

Siehe auch: `scripts/README-set-admin-password.md`

## Passwort-Hash generieren (manuell)

Falls Sie einen Passwort-Hash manuell generieren möchten, können Sie folgenden Node.js-Code verwenden:

```javascript
import bcrypt from 'bcryptjs'

const password = 'IhrNeuesPasswort'
const hash = await bcrypt.hash(password, 10)
console.log(hash)
```

Oder mit einem Online-Tool: https://bcrypt-generator.com/ (Rounds: 10)

## Benutzerrollen

- **admin**: Voller Zugriff auf CMS und Mitgliederbereich
- **vorstand**: Zugriff auf CMS und Mitgliederbereich
- **mitglied**: Nur Mitgliederbereich

## Dateien

- `server/data/users.json` - Benutzerdaten (Datei verschlüsselt; Passwörter sind bcrypt-Hashes)
- `server/data/members.json` - Mitgliederdaten (Telefon, E-Mail, etc.)
- `server/data/sessions.json` - Aktive Sessions

## Sicherheit

- Passwörter werden mit bcrypt gehasht (Rounds: 10)
- JWT-Tokens für Sessions (7 Tage gültig)
- HTTP-Only Cookies
- Optional: Passwort-Prüfung gegen HaveIBeenPwned (k-Anonymity) via `HIBP_ENABLED=true`
- Geschützte API-Routen
- Middleware für geschützte Seiten

## Environment Variables

Fügen Sie in `.env` hinzu:

```
JWT_SECRET=ihr-geheimer-jwt-schluessel-hier
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=ihre-email@example.com
SMTP_PASS=ihr-smtp-passwort
SMTP_FROM=noreply@harheimertc.de
```

