feat: TimeMaster Kiosk Grundgerüst (Login + Stempeln)
Android-Tablet-Kiosk-App, gedacht für Betrieb hinter WireGuard-VPN. Bearer-Token-Geräte-Auth statt Ed25519-Request-Signing (siehe Backend- Commit f4ff11a im Haupt-Repo). Ersteinrichtung (Server-URL+Token), PIN/ NFC/Listen-Login, Stempeln Ein/Aus/Pause, Heartbeat-Loop. Bekannte Einschränkung: Android-NFC (13,56 MHz) ist inkompatibel zu den 125-kHz-EM4100-Karten der bestehenden PC-Terminals – separate Karten nötig, siehe README. Vollständiger Plan: /home/sysops/.claude/plans/staged-marinating-dove.md Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
This commit is contained in:
commit
e42cae74f3
11 files changed
+981
No files matched your search
@@ -0,0 +1,49 @@
|
||||
# TimeMaster Kiosk (Flutter)
|
||||
|
||||
Stempeluhr-App für Android-Tablets, gedacht für den Betrieb hinter WireGuard-
|
||||
VPN (feste Geräte-IP). Kein Ed25519-Request-Signing wie beim Browser-PC-
|
||||
Terminal – Geräte-Auth läuft über ein einfaches Bearer-Token, siehe
|
||||
`backend/app/core/kiosk_security.py::_verify_bearer_device` im Haupt-Repo.
|
||||
|
||||
Vollständiger Architektur-Plan: `/home/sysops/.claude/plans/staged-marinating-dove.md`.
|
||||
|
||||
## Ersteinrichtung
|
||||
|
||||
1. Auf dem Server: `python cli.py kiosk add --company "Acme GmbH" --name "Eingang" --auth-mode bearer [--ip-whitelist 10.8.0.0/24]`
|
||||
2. CLI gibt Token **einmalig** aus – in der App unter „Ersteinrichtung" zusammen mit der Server-URL eintragen.
|
||||
3. Gerät erscheint in `KioskDevicesPage` als „pending" – Admin genehmigt.
|
||||
|
||||
## Login-Modi
|
||||
|
||||
- **PIN**: Personalnummer + PIN (`POST /kiosk/auth/pin`)
|
||||
- **NFC**: Kartenscan (Android-eigenes NFC, 13,56 MHz/ISO14443) + Pflicht-PIN
|
||||
als Zweitfaktor (`POST /kiosk/auth/nfc`)
|
||||
- **Liste**: Mitarbeiter aus Liste tippen (`POST /kiosk/auth/list`)
|
||||
|
||||
**Wichtig – Hardware-Inkompatibilität:** Die PC-Terminals nutzen einen
|
||||
125-kHz-EM4100-Leser (HID-Keyboard-Wedge, siehe `project_kiosk_hardening`-
|
||||
Memory). Android-NFC liest nur 13,56-MHz-Karten (ISO14443/Mifare/NTAG).
|
||||
**Bestehende Mitarbeiterkarten für die PC-Terminals funktionieren NICHT am
|
||||
Tablet** und umgekehrt – für Tablet-NFC-Login werden separate 13,56-MHz-
|
||||
Karten/Tags benötigt, die zusätzlich über `POST /users/{id}/kiosk-nfc`
|
||||
hinterlegt werden müssen (gleiches Feld, zwei unterschiedliche physische
|
||||
Kartentypen).
|
||||
|
||||
## Build
|
||||
|
||||
Kein lokales Flutter-SDK nötig – Build läuft auf root@192.168.1.236
|
||||
(gleiche Umgebung wie `timemaster-mobile`, siehe dortige Memory-Notiz
|
||||
`project_android_app.md` für Setup-Details: `flutteruser`, `/opt/flutter`,
|
||||
`/opt/android-sdk`).
|
||||
|
||||
```bash
|
||||
# Auf 236, als flutteruser:
|
||||
cd /opt/timemaster-kiosk
|
||||
flutter build apk --release --target-platform android-arm64
|
||||
```
|
||||
|
||||
## Umfang v1
|
||||
|
||||
Nur Login + Stempeln + Heartbeat. Kein Offline-Modus, keine NTAG424-
|
||||
Kryptografie, kein Android-Lock-Task/MDM (App läuft im normalen Vollbild,
|
||||
kein Geräte-Pinning).
|
||||
Reference in new issue
Block a user