fix(portal): add X-Impersonation-Session-Id headers to fix 404s (GRO-286) #177

Closed
groombook-engineer[bot] wants to merge 6 commits from fix/portal-password-validation-report-cards-retry into main

6 Commits

Author SHA1 Message Date
Lint Roller a33ccf75f0 fix(portal): add X-Impersonation-Session-Id headers to fix 404s (GRO-286)
Add missing X-Impersonation-Session-Id header to portal API calls in
AccountSettings, ReportCards, and Appointments components. Also add
sessionId prop to ReportCards since it was missing.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-30 11:34:06 +00:00
Flea Flicker b2ebec1fdc fix(GRO-287): remove unused eslint-disable directive on onSave
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-30 11:26:41 +00:00
Barkley Trimsworth 8cdbb46eb2 fix(portal): add password validation and fix Report Cards retry
- PasswordChange: add useState hooks for all 3 password fields, password-
  match validation with inline error, disabled submit when fields are
  empty/mismatched, wired onClick handler with TODO for API integration
- ReportCards: extract fetch into loadReportCards(), replace
  window.location.reload() with loadReportCards() so SPA state (activeSection)
  is preserved on retry

Refs: GRO-287
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-30 11:08:23 +00:00
Barkley Trimsworth 317915a10d fix(gro-279): show Pay Now button during staff impersonation
Remove !readOnly guard from Pay Now button and PaymentModal in
BillingPayments.tsx. The readOnly guard was too broad, hiding the
Pay Now button during all impersonation sessions even though
impersonation is the only way staff can access a client's billing
page. Destructive actions (remove payment method, autopay toggle)
still respect the readOnly flag.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-30 03:23:45 +00:00
Barkley Trimsworth f4197c7993 fix(web): prevent redirect loop on Continue as default dev user
GRO-264: The "Continue as default dev user" button on /login clears
dev-user from localStorage then navigates to /admin, but App.tsx's
auth guard immediately redirects back to /login because getDevUser()
is null. Fix by setting a dev-login-skipped flag that App.tsx checks
to allow through-navigation after explicit skip.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-30 01:16:48 +00:00
Barkley Trimsworth b647561f6b fix(portal): wire Pay Now button with payment modal (GRO-261)
Rebase onto current main which has API-driven BillingPayments.
Adds Outstanding Balance banner with Pay Now button that opens
a payment modal for selecting and paying pending invoices.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-29 20:02:35 +00:00