# Browser-Linked Bestellhistorie ## Zweck Dieses Feature zeigt Kunden ihre zuletzt erstellten Bestellungen ohne Login-System. Die Ansicht ist unter `orders.php` erreichbar und listet Bestellungen, die in diesem Browser gespeichert wurden. ## Nutzerverhalten - Nach erfolgreicher Reservierung wird die Bestellnummer automatisch im Browser gemerkt. - Die Seite `Meine Bestellungen` zeigt diese Bestellungen mit Typ, Datum, Status und Detail-Link. - Es gibt keine manuelle Verknüpfung per Login oder Order-Import. ## Technisches Modell (Best Effort) - Speicherung erfolgt in einem signierten Cookie. - Cookie-Inhalt: `base64url(payload).hmac` - Payload-Version `v=1`: - `ids`: Liste der gemerkten Bestellnummern - `iat`: Zeitstempel der Erstellung - Signatur: `hash_hmac('sha256', base64url(payload), ORDER_HISTORY_COOKIE_SECRET)` - Bei ungültiger/tamperter Signatur wird der Verlauf ignoriert (fail-safe, ohne Fehlerseite). ## Limits und Aufbewahrung - Maximale Anzahl gemerkter Bestellungen: `ORDER_HISTORY_MAX_IDS` (Standard `10`) - Aufbewahrung: `ORDER_HISTORY_COOKIE_TTL_DAYS` (Standard `365` Tage) - Reihenfolge: neueste zuerst ## Sicherheit und Datenschutz - Browser-gebunden, nicht account-gebunden. - Tamper-evident durch HMAC-Signatur. - Cookie-Flags: - `HttpOnly` - `SameSite=Lax` - `Secure` bei HTTPS - Wenn Browserdaten/Cookies gelöscht werden, ist der Verlauf weg. ## Konfiguration In `config.php` müssen folgende Werte gesetzt sein: - `ORDER_HISTORY_COOKIE_NAME` - `ORDER_HISTORY_COOKIE_TTL_DAYS` - `ORDER_HISTORY_MAX_IDS` - `ORDER_HISTORY_COOKIE_SECRET` `ORDER_HISTORY_COOKIE_SECRET` muss ein eigener, ausreichend zufälliger Wert sein. ## Betrieb und Fehlerverhalten - Das Feature ist bewusst best effort: - Kann der Cookie nicht geschrieben werden, bleibt der Checkout trotzdem erfolgreich. - Nicht mehr vorhandene oder ausgeblendete Bestellungen erscheinen nicht in `orders.php`. - Ungültige Cookie-Daten werden still verworfen.