915a310e0ae8022159041d01a1d46dab620b6b36
A deliberately-paced Book New wizard could outlive the portal impersonation session, so the final POST /api/portal/waitlist returned 401 and the UI showed "Failed to book appointment. Please try again." BookingFlow now retries once on a 401: it re-mints a fresh portal session via POST /api/portal/session-from-auth (the customer's Better Auth cookie is still valid) and resubmits the waitlist request with the new X-Impersonation-Session-Id. Falls through to the existing error if no Better Auth session is available (staff/dev impersonation paths). - Appointments.tsx: remintPortalSession() helper; handleConfirmBooking submits via submitWaitlist(id) and retries once after a 401 re-mint. - Test: first waitlist POST 401 -> re-mint -> retry with fresh id -> success; asserts exactly one re-mint and the header sequence. - UAT_PLAYBOOK.md 5.12e: TC-WEB-5.12.25 slow-wizard submit succeeds. Companion to groombook/api GRO-2234 (bounded sliding expiration). Co-Authored-By: Paperclip <noreply@paperclip.ing>
web
GroomBook web app (extracted from groombook/app monorepo)
Description
Languages
TypeScript
99.5%
CSS
0.3%