Přeskočit obsah

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_capacity a Therapist.online_meeting_url

Nastavuje se v Správě terapeutů (/TherapistManagement).

Související