Compare commits
base: groombook/web:flea/uat-to-main-gro-2359-web
groombook/web:main
groombook/web:uat
groombook/web:dev
groombook/web:fix/gro-2572-sso-redirect
groombook/web:promote/GRO-1026-dev-to-uat
groombook/web:feature/gro-1026-scrollbar-hide
groombook/web:promote/web-gro-2516-uat-main-frozen
groombook/web:feature/gro-2516-harden-gitignore
groombook/web:promote/gro-2513-uat-to-main
groombook/web:feature/gro-2513-settings-role-gate
groombook/web:flea/uat-to-main-gro-2373-web
groombook/web:gro-2381-agents-contributing
groombook/web:flea/uat-to-main-gro-2359-web
groombook/web:promote/GRO-2373-dev-to-uat
groombook/web:feature/gro-2373-chrome-signout
groombook/web:promote/GRO-2358-dev-to-uat
groombook/web:release/main-GRO-2319-web
groombook/web:promote/GRO-2319-web-to-uat
groombook/web:feat/GRO-2319-live-statusbadge-palette
groombook/web:flea/uat-to-main-gro-2160
groombook/web:promote/GRO-2160-dev-to-uat
groombook/web:flea/uat-to-main-gro-2159
groombook/web:promote/GRO-2159-dev-to-uat
groombook/web:feat/GRO-2159-route-drag-reorder
groombook/web:flea/uat-to-main-gro-2158
groombook/web:flea/dev-to-uat-gro-2158
groombook/web:feat/GRO-2158-route-planner
groombook/web:flea/dev-to-uat-gro-2236
groombook/web:flea/gro-2236-portal-service-cards
groombook/web:flea/uat-to-main-gro-2234-web
groombook/web:flea/promote-uat-gro-2234
groombook/web:flea-flicker/gro-2234-portal-waitlist-remint-on-401
groombook/web:fix/gro-2207-portal-pet-readview-fields
groombook/web:flea/gro-2218-playbook-512e
groombook/web:flea/gro-2213-portal-preferredtime
groombook/web:flea/gro-2180-appointments-starttime-shape
groombook/web:fix/gro-2094-react-blank-mount
groombook/web:flea/gro-2099-fix-authed-portal-nav
groombook/web:flea/gro-2089-fix-authentik-credential-source
groombook/web:flea/gro-2012-portal-sessionid-fallback
groombook/web:flea/gro-2011-login-blank
groombook/web:gro-1867-portal-better-auth
groombook/web:gro-1829-swpwa-fix
groombook/web:ccfa5281-2076-40c2-87a9-bf2dbcf98d22/gro-1822-role-based-redirect
groombook/web:fix/gro-1822-role-based-redirect
groombook/web:feature/gro-1165e-booking-status-badge
groombook/web:feature/gro-1165d-booking-analytics
groombook/web:feature/gro-1165b-error-recovery
groombook/web:flea-flicker/pet-profile-editor
groombook/web:fix/gro-1757-uat-playbook
groombook/web:fix/gro-1633-web-ci-buildx
groombook/web:promote-uat-gro1592
groombook/web:fix/gro-1592-sso-session-cookie
groombook/web:pr-13
groombook/web:fix/gro-1414-pet-size-enum
groombook/web:pr-1
groombook/web:fix/ci-registry-auth
groombook/web:fix/GRO-1289-uat-playbook-web
groombook/web:add-renovate-config
groombook/web:docs/GRO-1099-uat-playbook-web
..
compare: groombook/web:a7f2e2e6b38173a397ca247e8909ee83047829fe
groombook/web:main
groombook/web:uat
groombook/web:dev
groombook/web:fix/gro-2572-sso-redirect
groombook/web:promote/GRO-1026-dev-to-uat
groombook/web:feature/gro-1026-scrollbar-hide
groombook/web:promote/web-gro-2516-uat-main-frozen
groombook/web:feature/gro-2516-harden-gitignore
groombook/web:promote/gro-2513-uat-to-main
groombook/web:feature/gro-2513-settings-role-gate
groombook/web:flea/uat-to-main-gro-2373-web
groombook/web:gro-2381-agents-contributing
groombook/web:flea/uat-to-main-gro-2359-web
groombook/web:promote/GRO-2373-dev-to-uat
groombook/web:feature/gro-2373-chrome-signout
groombook/web:promote/GRO-2358-dev-to-uat
groombook/web:release/main-GRO-2319-web
groombook/web:promote/GRO-2319-web-to-uat
groombook/web:feat/GRO-2319-live-statusbadge-palette
groombook/web:flea/uat-to-main-gro-2160
groombook/web:promote/GRO-2160-dev-to-uat
groombook/web:flea/uat-to-main-gro-2159
groombook/web:promote/GRO-2159-dev-to-uat
groombook/web:feat/GRO-2159-route-drag-reorder
groombook/web:flea/uat-to-main-gro-2158
groombook/web:flea/dev-to-uat-gro-2158
groombook/web:feat/GRO-2158-route-planner
groombook/web:flea/dev-to-uat-gro-2236
groombook/web:flea/gro-2236-portal-service-cards
groombook/web:flea/uat-to-main-gro-2234-web
groombook/web:flea/promote-uat-gro-2234
groombook/web:flea-flicker/gro-2234-portal-waitlist-remint-on-401
groombook/web:fix/gro-2207-portal-pet-readview-fields
groombook/web:flea/gro-2218-playbook-512e
groombook/web:flea/gro-2213-portal-preferredtime
groombook/web:flea/gro-2180-appointments-starttime-shape
groombook/web:fix/gro-2094-react-blank-mount
groombook/web:flea/gro-2099-fix-authed-portal-nav
groombook/web:flea/gro-2089-fix-authentik-credential-source
groombook/web:flea/gro-2012-portal-sessionid-fallback
groombook/web:flea/gro-2011-login-blank
groombook/web:gro-1867-portal-better-auth
groombook/web:gro-1829-swpwa-fix
groombook/web:ccfa5281-2076-40c2-87a9-bf2dbcf98d22/gro-1822-role-based-redirect
groombook/web:fix/gro-1822-role-based-redirect
groombook/web:feature/gro-1165e-booking-status-badge
groombook/web:feature/gro-1165d-booking-analytics
groombook/web:feature/gro-1165b-error-recovery
groombook/web:flea-flicker/pet-profile-editor
groombook/web:fix/gro-1757-uat-playbook
groombook/web:fix/gro-1633-web-ci-buildx
groombook/web:promote-uat-gro1592
groombook/web:fix/gro-1592-sso-session-cookie
groombook/web:pr-13
groombook/web:fix/gro-1414-pet-size-enum
groombook/web:pr-1
groombook/web:fix/ci-registry-auth
groombook/web:fix/GRO-1289-uat-playbook-web
groombook/web:add-renovate-config
groombook/web:docs/GRO-1099-uat-playbook-web
4 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
a7f2e2e6b3 |
Merge pull request 'Promote dev → uat: GRO-2359 OOBE portal-creation routing' (#76) from promote/GRO-2359-dev-to-uat into uat
Promote dev → uat: GRO-2359 OOBE portal-creation routing (#76) |
||
|
|
a12bf019fa |
feat(GRO-2359): route Authentik new-SSO users into OOBE (web)
The post-auth handler in CustomerPortal previously rendered the
"Portal access not configured" card when the SSO bridge returned 404
(no client row for the user's email). That trapped first-time SSO
users on a dead-end screen with no path to portal creation.
This change routes the 404 to a new OOBE component (src/portal/OOBE.tsx)
that drives portal creation:
* Mounts inline inside CustomerPortal so the post-auth flow stays
inside the portal render tree (no App-level router needed).
* Also reachable as a direct deep-link via the new /onboarding route
in App.tsx (for grooming admins or recovery flows).
* Submits to a new POST /api/portal/clients-from-auth endpoint in
groombook-api (companion commit) that creates a fresh client row
bound to the Better Auth email. 409 means the email already has a
portal record — the OOBE shows a portal-selection message.
* Uses the canonical shared signOut() from lib/auth-client (GRO-2358
invariant) for the Sign out button.
* Full window.location.href reload on submit success to reset the
bridge's cached state and land the user in their portal.
The no-access card itself is preserved for the deep-link deleted-portal
case (a customer whose portal was disabled/deleted), signalled via
?noAccess=deleted-portal on a portal sub-route. The OOBE handles the
first-time-creation case; the no-access card handles the "had a portal
but lost it" case.
Test coverage:
* "routes to /onboarding when session-from-auth returns 404 (GRO-2359)"
— proves the post-auth 404 mounts the OOBE inline, not the legacy
no-access card.
* 6 new OOBE tests: render from direct link, name prefill, form
submission, 409 portal-selection, required-name validation, shared
signOut(), redirect on no-session.
* P1 no-access tests reworked to use ?noAccess=deleted-portal so the
GRO-2358 signOut invariant is still verified on the only surviving
path to the no-access card.
UAT_PLAYBOOK §5.25.5–6e rewritten to cover the OOBE flow (form submit,
409, deep-link mount, deleted-portal no-access card).
Paired with the api PR on feature/2357-p2-portal-clients-from-auth.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
(cherry picked from commit
|
||
|
|
bfe3ccf3b2 | Promote dev → uat: GRO-2358 logout on no-access screen (#73) | ||
|
|
b52b8e10ad | feat(GRO-2319): dev→uat — live StatusBadge palette (web) (#70) |