# Cross-Device Passkey Debugging

## Problem: Smartphone kann keine Verbindung aufbauen

CORS funktioniert jetzt korrekt (OPTIONS gibt 204 zurück), aber das Smartphone kann immer noch keine Verbindung aufbauen.

## Debugging-Schritte

### 1. Prüfe Server-Logs

Auf dem Server, während du versuchst, den QR-Code zu scannen:

```bash
pm2 logs harheimertc --lines 100 | grep -i "register-passkey\|OPTIONS\|CORS\|origin"
```

**Was zu prüfen ist:**
- Kommt ein Request vom Smartphone an? (Sollte `[DEBUG] register-passkey request received` zeigen)
- Welche Origin hat der Request? (Sollte `https://harheimertc.tsschulz.de` sein)
- Welcher User-Agent? (Sollte das Smartphone-Browser sein)

### 2. Prüfe Browser-Konsole (Desktop)

Öffne F12 → Console auf dem Desktop-Browser und prüfe:
- Wird der QR-Code angezeigt?
- Gibt es Fehlermeldungen?
- Was steht in den Debug-Logs?

### 3. Prüfe Smartphone-Browser

**Wichtig:** Wenn du den QR-Code scannst, öffnet das Smartphone die Website. Prüfe dort:

1. **Öffne die Website direkt auf dem Smartphone:**
   ```
   https://harheimertc.tsschulz.de/registrieren
   ```

2. **Prüfe, ob die Website lädt** (sollte funktionieren, da du sagst, du kannst die Website vom Smartphone aus erreichen)

3. **Versuche, den QR-Code zu scannen** und prüfe:
   - Öffnet sich die Website auf dem Smartphone?
   - Gibt es Fehlermeldungen?
   - Wird ein Request an den Server gesendet?

### 4. Netzwerk-Test

**Auf dem Smartphone:**
- Öffne die Website direkt: `https://harheimertc.tsschulz.de`
- Prüfe, ob sie lädt
- Prüfe, ob HTTPS korrekt funktioniert (keine Zertifikat-Fehler)

**Mit curl (vom Server aus):**
```bash
# Simuliere einen Request vom Smartphone
curl -X POST \
  -H "Origin: https://harheimertc.tsschulz.de" \
  -H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" \
  -H "Content-Type: application/json" \
  -d '{"registrationId":"test","credential":{}}' \
  -v \
  https://harheimertc.tsschulz.de/api/auth/register-passkey
```

### 5. Häufige Probleme

#### Problem 1: QR-Code wird nicht angezeigt
**Symptom:** Kein QR-Code erscheint im Browser
**Lösung:** 
- Prüfe Browser-Konsole auf Fehler
- Prüfe, ob `startRegistration` aufgerufen wird
- Prüfe, ob die Options korrekt sind

#### Problem 2: QR-Code wird gescannt, aber Website öffnet sich nicht
**Symptom:** QR-Code wird gescannt, aber nichts passiert
**Lösung:**
- Prüfe, ob der QR-Code die richtige URL enthält
- Prüfe, ob das Smartphone die Website erreichen kann
- Prüfe, ob es Firewall-Blockierungen gibt

#### Problem 3: Website öffnet sich, aber Request kommt nicht an
**Symptom:** Website öffnet sich auf dem Smartphone, aber Server-Logs zeigen keinen Request
**Lösung:**
- Prüfe CORS-Header (sollte jetzt funktionieren)
- Prüfe, ob der Request wirklich gesendet wird (Browser-Entwicklertools auf dem Smartphone)
- Prüfe, ob Apache den Request weiterleitet

#### Problem 4: Request kommt an, aber Fehler
**Symptom:** Request kommt im Server-Log an, aber es gibt einen Fehler
**Lösung:**
- Prüfe die Fehlermeldung im Server-Log
- Prüfe, ob die Challenge korrekt ist
- Prüfe, ob die Origin übereinstimmt

### 6. Manueller Test

**Test 1: Direkte Website-Zugriff vom Smartphone**
```
https://harheimertc.tsschulz.de/registrieren
```
Sollte funktionieren.

**Test 2: API-Endpoint vom Smartphone**
Öffne auf dem Smartphone:
```
https://harheimertc.tsschulz.de/api/auth/register-passkey-options
```
Sollte einen JSON-Fehler zurückgeben (weil POST erwartet wird), aber kein 404.

**Test 3: OPTIONS-Request vom Smartphone**
Mit einem Tool wie "HTTP Request" auf dem Smartphone:
```
OPTIONS https://harheimertc.tsschulz.de/api/auth/register-passkey-options
Origin: https://harheimertc.tsschulz.de
```
Sollte 204 mit CORS-Headern zurückgeben.

### 7. Browser-spezifische Probleme

**Chrome/Edge:**
- Sollte Cross-Device unterstützen
- QR-Code sollte automatisch erscheinen

**Firefox:**
- Unterstützt Cross-Device möglicherweise nicht vollständig
- Prüfe Browser-Konsole auf Warnungen

**Safari (iOS):**
- Unterstützt Cross-Device
- QR-Code sollte automatisch erscheinen

### 8. Was die Logs zeigen sollten

**Wenn alles funktioniert:**
1. Desktop-Browser: `[DEBUG] startRegistration called - QR-Code should appear now`
2. Smartphone scannt QR-Code
3. Smartphone sendet Request: `[DEBUG] register-passkey request received` mit Smartphone User-Agent
4. Server verifiziert: `[DEBUG] Verification successful`

**Wenn es nicht funktioniert:**
- Kein Request vom Smartphone → Problem mit QR-Code oder Netzwerk
- Request kommt an, aber Fehler → Problem mit Challenge oder Origin
- Timeout → Problem mit Verbindung oder CORS

### 9. Nächste Schritte

1. **Prüfe Server-Logs** während des QR-Code-Scans
2. **Prüfe Browser-Konsole** auf dem Desktop
3. **Prüfe, ob der QR-Code angezeigt wird**
4. **Prüfe, ob das Smartphone die Website öffnet**
5. **Prüfe, ob ein Request ankommt**

Bitte teile die Ergebnisse dieser Tests, dann können wir das Problem weiter eingrenzen.
