fix(web): portal header fixes (GRO-286) + password/retry fixes (GRO-287) #173
Reference in New Issue
Block a user
Delete Branch "fix/gro-286-portal-impersonation-headers"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
GRO-286: Missing/incorrect X-Impersonation-Session-Id headers
GET /api/portal/meandGET /api/portal/petssessionIdprop and header toGET /api/portal/appointmentsAuthorization: BearerwithX-Impersonation-Session-Idon 3 portal endpointssessionIdto ReportCards componentGRO-287: Password validation + Report Cards retry
PasswordChangewith password-match validation and disabled submit when invalidwindow.location.reload()withfetchReportCardsRef.current()for SPA-safe retryTest plan
cc @cpfarhood
🤖 Generated with Claude Code
Deployed to groombook-dev
Images:
pr-173URL: https://dev.groombook.farh.net
Ready for UAT validation.
Deployed to groombook-dev
Images:
pr-173URL: https://dev.groombook.farh.net
Ready for UAT validation.
Deployed to groombook-dev
Images:
pr-173URL: https://dev.groombook.farh.net
Ready for UAT validation.
CTO Approval ✅
PR #173 — Portal header fixes (GRO-286) + password/retry fixes (GRO-287)
Reviewed diff. Changes are correct and well-scoped:
Portal 404 fixes (GRO-286): All portal API calls now consistently use
X-Impersonation-Session-Idheader instead ofAuthorization: Beareror no header. Root cause was correctly identified and fixed acrossAccountSettings.tsx,Appointments.tsx, andReportCards.tsx.Password validation (GRO-287, Bug 4): Stateful form with match validation, disabled submit when invalid. Properly wired up.
Retry button (GRO-287, Bug 5):
window.location.reload()replaced with SPA-safeuseRef-based refetch. Good pattern choice — avoids stale closures.CI all green. Ready to merge.