Přeskočit obsah

Klienti

Entity: Client, ClientCategory (tabulky clients, client_categories)

Funkce: client_auth, onboarding, clientBooking — akce search_clients

Prověřeno proti commitu: rozpracováno

Testy: backend/tests/Feature/Audit/KlientiAuditTest.php

Routy

Routa Perimetr Ochrana Controller
GET/POST/PUT/DELETE /api/clients interní oprávnění clients ClientController
GET/POST/PUT/DELETE /api/clientCategories interní oprávnění client_categories ClientCategoryController
GET /api/public/clients veřejný alias pro staff staff session ClientController::list
PUT /api/public/clients/{id} veřejný klientský klientská session ClientController::publicUpdate
GET /api/public/clientCategories veřejný bez middleware ClientCategoryController::publicList
POST /api/public/client_auth veřejný klientský OTP/onboarding token podle akce FunctionsController::clientAuth
GET/POST /api/public/client_auth/onboarding veřejný klientský onboarding token a OTP při dokončení ClientAuthController::onboarding
GET /api/public/client_auth/me veřejný klientský klientská session ClientAuthController::me
POST /api/public/clientBooking search_clients veřejný dispatcher staff session uvnitř handleru FunctionsController::bookingSearchClients

Opravené nálezy

KLI-05 — Veřejný list klientských kategorií není omezený na firmu (střední)

Stav: opravený

Test: KLI-05: veřejný list klientských kategorií nevrací kategorie jiné firmy

Ověřený fakt — ClientCategoryController::publicList() filtruje pouze podle is_active a nemá tenantový filtr. Na veřejné routě tak může vrátit klientské kategorie všech firem.

Oprava — veřejný list klientských kategorií se omezuje na firmu ze staff session, pokud je přítomná; jinak v single-tenant režimu použije první aktivní firmu.

Dopad — klientské nastavení jiné firmy uniká přes veřejný endpoint. U kategorií pojišťoven nebo segmentů klientů může jít o citlivou obchodní konfiguraci a zároveň o zdroj záměny v UI.

Ověřené bez nálezu

  • Interní /api/clients není dostupné anonymně.
  • Klientská session přes PUT /api/public/clients/{id} neupraví interní pole jako email, notes ani is_active.
  • Staff session není platná klientská session pro /api/public/client_auth/me.
  • clientBooking search_clients nevrací klienty anonymnímu volání.