"""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]