Portál terapeuta¶
Cesta: /TherapistPortal
Komponenta: src/pages/TherapistPortal.jsx
Role: Terapeut (přihlášení přes Passkey)
Ověřený fakt — samostatné rozhraní terapeuta, nezávislé na admin účtu. Odpovídá modulu 3. Therapist Portal v zadání.
Změna logiky (export 19. 8. 2026): portál se z pouhé správy kapacit rozrostl na čtyři záložky — kalendář, kapacity, nastavení a export výkonů. Terapeut si nově může sám zakládat rezervace klientů.
Přihlášení a Passkeys¶
Komponenta src/components/therapist/TherapistOtpLogin.jsx:
flowchart TD
A[Terapeut otevře /TherapistPortal] --> B["/api/auth/passkey/login?returnTo=/TherapistPortal"]
B --> C[Passkey ověření]
C --> D["/api/auth/passkey/callback"]
D --> E{role therapist + portal_access_enabled?}
E -- ano --> F[Přesměrování do /TherapistPortal]
E -- ne --> G[Přístup zamítnut]
Backend po passkey callbacku ověří běžnou autentizovanou session a pustí do portálu jen uživatele s rolí therapist a portal_access_enabled: true. Pokud takový účet neexistuje, přístup je zamítnut.
Správa vlastních passkeys používá public-portálový alias /api/public/auth/passkey/manage. Endpoint stále vyžaduje backendovou passkey session; public zde znamená namespace terapeutického/klientského portálu, ne anonymní přístup.
Lokální kopie profilu terapeuta je uložena v localStorage (neo_therapist); autoritativní session je ale backendová passkey session.
Záložky¶
| Záložka | Komponenta | Obsah |
|---|---|---|
| Kalendář | TherapistCalendarView |
Vlastní termíny v týdenním, měsíčním a agenda pohledu; klik na volný slot otevře rezervaci klienta (TherapistBookingDialog), klik na termín jeho detail (TherapistEventDialog) |
| Kapacity | (v TherapistPortal.jsx) |
Správa vlastních AvailabilityBlock — vytváření, editace, mazání |
| Nastavení | (v TherapistPortal.jsx) |
Vlastní profil, správa vlastních passkeys a odkaz na online schůzku (online_meeting_url) |
| Export | TherapistExportPanel |
Měsíční CSV export provedených a zaplacených výkonů (status = completed a payment_status = paid), UTF-8 BOM pro Excel |
Ověřený fakt — terapeut pracuje jen s vlastními daty; správu plateb, dokladů ani cizích kalendářů portál neobsahuje.
Změna logiky — kapacita: pokud má terapeut portal_can_override_capacity = true, může v portálu vytvořit online rezervaci i mimo naplánovanou online kapacitu. Fyzická (ambulantní) kapacita ve stejném čase mu v tom nebrání.
Předpoklady v datech¶
- účet terapeuta má roli
therapist Therapist.portal_access_enabled = true- e-mail účtu terapeuta odpovídá e-mailu používanému pro passkey přihlášení
- volitelně
Therapist.portal_can_override_capacityaTherapist.online_meeting_url
Nastavuje se v Správě terapeutů (/TherapistManagement).
Související¶
- Entita
Therapist— poleportal_access_enabled,portal_user_email - Funkce
clientAuth(viz Base44 coupling)