# WetSlip Mobile Web v0.5 – Landing + Laravel Session Login

**Stand:** Implementierungsentwurf zum Testen. Keine Änderung am Server oder GitHub wurde automatisch vorgenommen.

## Projektstruktur

- `frontend/web/` – vollständige statische mobile WetSlip-Webseite mit dem früheren Flutter-Landingbild, Login und Demokatalog.
- `backend/` – **nur geänderte bzw. neue** Laravel-Dateien, kein vollständiges Laravel-Projekt.
- `docs/architecture/mobile-web-login-v05.md` – Architektur und Testanleitung.

## Frontend auf die Domain deployen

Veröffentliche den **Inhalt** von `frontend/web/` im DocumentRoot von `m.wetslip.net` (HTTPS). Erst ein Backup des bisherigen Stands anlegen. Service Worker Version 0.5 lädt die neuen statischen Ressourcen.

## Backend einspielen – nur in Entwicklung/Staging

Auf dem WetSlip-Webserver im Repository-Branch (nicht unbesehen nach Produktion):

1. Kopiere die Dateien unter `backend/` nach `backend/` des Laravel-Repositories und kontrolliere `git diff`.
2. Verifiziere Reverse-Proxy-HTTPS/TLS, `APP_URL=https://api.wetslip.net`, `SESSION_SECURE_COOKIE=true`, `SESSION_SAME_SITE=lax`, `SESSION_HTTP_ONLY=true`, `WETSLIP_MOBILE_ORIGINS=https://m.wetslip.net` in der **lokalen** `.env`. Keine Secrets committen.
3. Den Session-Cookie-Hostbereich bei `SESSION_DOMAIN=null` belassen, sodass Cookies nur an `api.wetslip.net` gehen. Wenn sie für Subdomains geteilt werden sollen, ist eine gesonderte Bedrohungsanalyse nötig.
4. `php artisan route:list --path=mobile/auth` und `php artisan test --filter=MobileWebAuthTest`. Für echte Browser-Requests CORS Preflight sowie `Origin: https://m.wetslip.net` kontrollieren. Ein Webserver darf den `OPTIONS`-Request nicht an Laravel vorbei mit Fehlercode beantworten.
5. `php artisan config:clear` nur im Entwicklungsbetrieb, danach Konfigurationscache im üblichen Deployment neu aufbauen.
6. Erst Testkonto anmelden und Logout testen. Vorher ist die Oberfläche funktionsfähig, aber der Login kann nicht funktionieren.

**Datenbank:** Es sind keine neuen Tabellen/Migrationen nötig; vorhandene Laravel-`users` und `sessions` werden verwendet. Ob auf der Ziel-DB tatsächlich Testkonten existieren, wurde nicht geprüft.

**Wichtig:** Passwort-Reset/Registrierung/Altersverifikation sind noch nicht implementiert; die entsprechenden Buttons behaupten dies nicht. Der Demo-Augeneinstieg zeigt ausschließlich den synthetischen Katalog, keine geschützten Inhalte.
