# WetSlip v0.5.1 – Mobile Login (Gesamtstand)

Der Ordner `frontend/web/` ist die gesamte statisch auslieferbare Web-App für `m.wetslip.net`. Die Dateien unter `backend/` sind **nur die Mobile-Auth-Ergänzungen**, NICHT das gesamte Laravel-Projekt.

**Reihenfolge:** Backend-Ergänzungen auf einem Testbranch vergleichen und in Development/Staging installieren; `/mobile/auth/*`-Routen und CORS prüfen; dann `frontend/web/` auf m.wetslip.net veröffentlichen. Keine echten Passwörter posten.

## Laravel auf api.wetslip.net

- MobileSessionController.php, mobile_auth.php, config/cors.php, routes/web.php und Feature-Test im Repository-Branch vergleichen. `routes/web.php` nicht ungeprüft überschreiben.
- Prüfen, ob `routes/web.php` `require __DIR__.'/mobile_auth.php';` enthält.
- In lokaler .env: `APP_URL=https://api.wetslip.net`, `SESSION_SECURE_COOKIE=true`, `SESSION_HTTP_ONLY=true`, `SESSION_SAME_SITE=lax`, `SESSION_DOMAIN=null`, `WETSLIP_MOBILE_ORIGINS=https://m.wetslip.net`. **SESSION_DOMAIN=null nur sinnvoll, wenn Laravel .env `null` korrekt interpretiert; andernfalls Variable weglassen.**
- `php artisan route:list --path=mobile/auth` und `php artisan test --filter=MobileWebAuthTest`.
- Nach Installation ggf. `php artisan config:cache` / `php artisan route:cache` im etablierten Deployment; bei Debugging Cache-Zustand prüfen. Kein Live-Restart ungeprüft.
- `bash scripts/check-mobile-cors.sh` von einem Rechner mit Netzwerkzugriff. Auf `OPTIONS /login` soll `Access-Control-Allow-Origin: https://m.wetslip.net` und `Access-Control-Allow-Credentials: true` erscheinen; auf `GET /me` für Gäste ein HTTP 401 mit denselben CORS-Headern. Bei 404 Route, bei 301/302 Proxy-Weiterleitung, bei 500 Server-Logs prüfen.
- Keine `mode: no-cors`-Umgehung, keine globalen Wildcard-CORS-Header in Apache oder Laravel.

## Frontend

`frontend/web/` nach eigener Sicherung ins DocumentRoot von `m.wetslip.net` deployen. Danach Service-Worker-Update zulassen (im Zweifel neuen Tab/erneutes Laden).

„Angemeldet bleiben“ steuert die Laravel-Remember-Me-Funktion. Der initiale Wert ist **aus**; bei Aktivierung kann Laravel ein langlebiges Cookie setzen.

**Noch nicht enthalten:** Live-Registrierung, Passwort-Reset, Altersprüfung, echte Bestell-/Zahlungsaktionen; die älteren Registrierungs-Screenshots sind eine Funktionsreferenz. Für Adult-Marktplatz sind die Verifizierungs- und Berechtigungsprüfungen serverseitig zu entwerfen.

**Zoom:** Browser-Zoom nicht pauschal blockieren. Für die eigene Flutter-APK `AndroidWebViewController.enableZoom(false)` nach der WebView-Erzeugung setzen, sofern die genutzte Plugin-Version dies unterstützt.

## Vergessene Testpasswörter (nur Entwicklungs-/Stagingserver)

Nach Aufnahme des neuen `ResetDevUserPassword.php`-Commands und Prüfung der lokalen `APP_ENV`-Einstellung kannst Du ein Testkonto aktualisieren, ohne das Klartextpasswort als Shell-Argument anzugeben:

```bash
cd backend
php artisan wetslip:dev-reset-password testkonto@beispiel.invalid
```

Der Befehl fordert das neue Kennwort verdeckt zweimal an und ist in `APP_ENV=production` deaktiviert. Er erstellt keine neuen Benutzer. Laravel speichert danach einen neuen Passwort-Hash. Wenn existierende Sitzungen widerrufen werden sollen, muss dies zusätzlich serverseitig erfolgen.
