Files
2026-05-24 12:49:09 +02:00

39 lines
1.1 KiB
Python

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