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/clientsnení dostupné anonymně. - Klientská session přes
PUT /api/public/clients/{id}neupraví interní pole jakoemail,notesaniis_active. - Staff session není platná klientská session pro
/api/public/client_auth/me. clientBookingsearch_clientsnevrací klienty anonymnímu volání.