Unifi-Voucher-Tool/includes
Friederich Loheide 61810eb050 Display-Seiten: Gäste holen sich den Zugang selbst
Für Empfang, Lobby oder Tagungsraum lässt sich je Site eine öffentliche
Seite anlegen (kiosk.php), die auf einem Bildschirm oder Tablet läuft:
ein großer Knopf, ein Klick, ein Zugangscode mit QR-Code. Nach einer
einstellbaren Anzeigedauer springt der Bildschirm zurück, damit der
nächste Gast nicht den Code seines Vorgängers sieht.

Verwaltung unter Administration → Display-Seiten:
- Site und optionales Voucher-Profil (bestimmt Laufzeit, Geräte, QoS)
- eigene Überschrift und Text für den Bildschirm
- Codes pro Tag, Wartezeit zwischen zwei Codes, Anzeigedauer
- geheimer Link zum Kopieren, als QR-Code anzeigbar und jederzeit
  erneuerbar (der alte Link gilt dann sofort nicht mehr)

Absicherung: der Link ist der Zugang, deshalb Tageslimit und Wartezeit
je Display, CSRF-Token am Formular, `noindex` im Kopf und ein Eintrag im
Audit-Log für jeden ausgegebenen Code. Webhooks werden für Kiosk-Codes
bewusst nicht ausgelöst – ein Empfangsdisplay würde den Kanal fluten.

Technik:
- neue Tabelle `kiosks`, `vouchers.kiosk_id` hält die Herkunft fest
  (Migration 0005, database.sql nachgezogen)
- includes/Kiosk.php kapselt Token, Limits und Profil-Auflösung
- includes/VoucherService.php bündelt die Voucher-Erstellung, die vorher
  in index.php lag und für den Kiosk ein zweites Mal nötig gewesen wäre
- Startbildschirm zeigt zusätzlich einen QR auf sich selbst, damit Gäste
  die Seite am eigenen Handy öffnen können

Tests: 9 neue Fälle für Token-Prüfung, Wartezeit, Tageslimit und
Profil-Auflösung (38 Tests gesamt), PHPStan deckt Kiosk.php mit ab.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 16:51:50 +00:00
..
.htaccess Sicherheits-Header, Werkzeuge und Dokumentation 2026-09-23 06:49:14 +00:00
admin_nav.php Display-Seiten: Gäste holen sich den Zugang selbst 2026-09-23 16:51:50 +00:00
ApiKey.php API-Reife: Scopes (read/write), Rate-Limit pro Key, OpenAPI-Spec 2026-06-05 20:47:26 +00:00
Auth.php DB-gestützte Sessions (opt-in) + 'überall abmelden' 2026-06-06 05:49:53 +00:00
Captcha.php CAPTCHA für öffentlichen Modus (Rechenaufgabe oder hCaptcha) 2026-06-06 05:42:06 +00:00
Crypto.php Security: OAuth-state, Verschlüsselung, Session-Timeout & weitere Härtung 2026-06-05 18:45:47 +00:00
Database.php Fix sites freeze bug, add features and shorten README 2026-04-21 16:08:08 +00:00
DbSessionHandler.php DB-gestützte Sessions (opt-in) + 'überall abmelden' 2026-06-06 05:49:53 +00:00
I18n.php feat: comprehensive UI/UX and feature improvements 2026-05-08 17:59:17 +00:00
Kiosk.php Display-Seiten: Gäste holen sich den Zugang selbst 2026-09-23 16:51:50 +00:00
Mailer.php E-Mails und Druckvorlage im neuen Design 2026-09-23 06:42:45 +00:00
Notifier.php Webhook-Events & Health-Endpoint 2026-06-05 20:49:06 +00:00
Sms.php SMS-Versand (Twilio): includes/Sms.php + Option im Voucher-Formular + Settings 2026-06-06 05:44:46 +00:00
Totp.php Erweiterte Features (1/2): Trusted-Proxy-IP, Bandbreitenlimits, 2FA 2026-06-05 19:39:28 +00:00
Ui.php Release-Workflow: ZIP bei jedem Merge nach main 2026-09-23 14:50:10 +00:00
UniFiController.php Erweiterte Features (1/2): Trusted-Proxy-IP, Bandbreitenlimits, 2FA 2026-06-05 19:39:28 +00:00
Upload.php Tests für Upload und Ui, strengere CI-Prüfungen 2026-09-23 06:52:22 +00:00
VoucherService.php Display-Seiten: Gäste holen sich den Zugang selbst 2026-09-23 16:51:50 +00:00