feat: agent-02-kiosk Phase 2A - Auth endpoints (PIN/NFC/QR/List)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-24 12:49:09 +02:00
parent 094863f94b
commit 30828c69e9
4 changed files with 378 additions and 1 deletions
+38
View File
@@ -0,0 +1,38 @@
"""Schemas für Kiosk-User-Authentifizierung."""
import uuid
from pydantic import BaseModel, Field
class KioskPinLoginRequest(BaseModel):
"""Login via Personalnummer + PIN."""
personnel_number: str = Field(..., min_length=1)
pin: str = Field(..., min_length=4, max_length=16)
class KioskNfcLoginRequest(BaseModel):
"""Login via NFC-UID."""
nfc_uid: str = Field(..., min_length=1, max_length=64)
class KioskQrLoginRequest(BaseModel):
"""Login via QR-Code (enthält verschlüsselten Token)."""
qr_token: str = Field(..., min_length=1)
class KioskSessionResponse(BaseModel):
"""Antwort nach erfolgreichem Kiosk-Login."""
session_token: str
user_id: uuid.UUID
user_name: str # "Max M." (Vorname + Nachname abgekürzt für Datenschutz)
expires_in_seconds: int # 900 (15 min)
auth_method: str # "pin" | "nfc" | "qr" | "list"
class KioskUserListEntry(BaseModel):
"""Minimale User-Info für Auswahl in der Mitarbeiterliste."""
id: uuid.UUID
display_name: str # "Max M." oder Kürzel
class KioskUserListResponse(BaseModel):
users: list[KioskUserListEntry]