Aller au contenu principal

Legacy /client Decommission Checklist

Goal​

Retire the legacy token-based /client experience and /api/client-access/* public controller endpoints.

Strategy: hard cut (no backward compatibility).

Status (2026-07-24) — Phase 4 complete​

Legacy UX tree and public /api/client-access/* controller are gone. Residual dead DTOs and PayPal /client/paypal/* defaults were removed in the cleanup wave. Modern portal is /portal/* with magic-link entry via /client?returnUrl=… (intentional bridge, not legacy pages).

Removed​

  1. Legacy frontend route mount /client/* pages (quotes, sessions, galleries, etc.)
  2. frontend/src/routes/client.routes.tsx, frontend/src/pages/client/**
  3. frontend/src/components/layout/ClientLayout.tsx
  4. frontend/src/client/client-access/**, frontend/src/components/client-access/**
  5. Legacy backend public controller /api/client-access/*
  6. Unused client-access/dto leftovers (resolve-client-access, send-client-email, update-client-profile)
  7. Stale PayPal defaults pointing at /client/paypal/return|cancel — now portal invoice URLs

Keep (modern, not legacy UX)​

PieceRole
GET /client?returnUrl=… → /portal/*Magic-link / email entry (ClientPortalEntryPage)
backend/src/client-access/** servicesTokens, email payloads, portal helpers (no public controller)
/portal/*, client-auth, client-accounts, client-messagesAuthenticated client portal

Replacement paths​

  • Quotes/documents → /portal/documents (+ detail routes)
  • Sessions → /portal/sessions
  • Galleries → /portal/galleries
  • Profile → /portal/settings
  • Proposal/upsell → DELETED (FE/BE + DB 0277; was /proposal/:token; use quote / portal flows instead)
  • PayPal return/cancel → /portal/documents/invoices/:id?payment=paypal-return|paypal-cancel

Exit criteria​

  • No product feature depends on legacy /client/* page tree
  • No new links generate legacy /client/quotes|sessions|… paths
  • Emails use /client?returnUrl= bridge or direct /portal/*
  • Optional: E2E coverage for /portal (tracked separately)
  • Optional: ops note that old bookmarked /client/… deep links fail (hard cut by design)

Notes​

  • External legacy deep links may 404; that is expected.
  • Do not reintroduce a public /api/client-access controller.
  • Related: APP_CLEANUP_MAP.md.