From 299559ecb5f69e25770019518243dab1a6f1c52b Mon Sep 17 00:00:00 2001 From: Mahesh Makani Date: Tue, 1 Aug 2023 08:36:18 +0100 Subject: [PATCH] feat(delete-account): set up route skeleton --- src/client/routes.tsx | 10 ++++++++++ src/server/routes/delete.ts | 25 +++++++++++++++++++++++++ src/server/routes/index.ts | 4 ++++ src/shared/model/PageTitle.ts | 4 +++- src/shared/model/Routes.ts | 2 ++ 5 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/server/routes/delete.ts diff --git a/src/client/routes.tsx b/src/client/routes.tsx index 13f121dcd7..b80ebeb13b 100644 --- a/src/client/routes.tsx +++ b/src/client/routes.tsx @@ -221,6 +221,16 @@ const routes: Array<{ ), }, + { + path: '/delete', + // TODO + element: , + }, + { + path: '/delete/complete', + // TODO + element: , + }, ]; interface Props { diff --git a/src/server/routes/delete.ts b/src/server/routes/delete.ts new file mode 100644 index 0000000000..342f9af0ef --- /dev/null +++ b/src/server/routes/delete.ts @@ -0,0 +1,25 @@ +import { Request } from 'express'; +import { ResponseWithRequestState } from '@/server/models/Express'; +import { rateLimitedTypedRouter as router } from '@/server/lib/typedRoutes'; +import { renderer } from '@/server/lib/renderer'; + +router.get('/delete', (req: Request, res: ResponseWithRequestState) => { + const html = renderer('/delete', { + requestState: res.locals, + pageTitle: 'Account Deletion', + }); + res.type('html').send(html); +}); + +router.get( + '/delete/complete', + (req: Request, res: ResponseWithRequestState) => { + const html = renderer('/delete/complete', { + requestState: res.locals, + pageTitle: 'Account Deletion Complete', + }); + res.type('html').send(html); + }, +); + +export default router.router; diff --git a/src/server/routes/index.ts b/src/server/routes/index.ts index 10d7fefa9f..b5c45779ae 100644 --- a/src/server/routes/index.ts +++ b/src/server/routes/index.ts @@ -19,6 +19,7 @@ import { default as agree } from './agree'; import { default as changeEmail } from './changeEmail'; import { default as subscriptions } from './subscriptions'; import { default as consentToken } from './consentToken'; +import { default as deleteAccount } from './delete'; const { okta } = getConfiguration(); @@ -79,6 +80,9 @@ if (okta.enabled) { // consent token routes uncachedRoutes.use(consentToken); +// delete account routes +uncachedRoutes.use(deleteAccount); + // email template routes router.use(emailTemplates); diff --git a/src/shared/model/PageTitle.ts b/src/shared/model/PageTitle.ts index 83136bf2c6..266c9dc32f 100644 --- a/src/shared/model/PageTitle.ts +++ b/src/shared/model/PageTitle.ts @@ -30,7 +30,9 @@ export type PageTitle = | 'Subscribe Error' | 'Subscribe Confirmation' | 'Unsubscribe Error' - | 'Unsubscribe Confirmation'; + | 'Unsubscribe Confirmation' + | 'Account Deletion' + | 'Account Deletion Complete'; export type PasswordPageTitle = Extract< 'Welcome' | 'Create Password' | 'Change Password', diff --git a/src/shared/model/Routes.ts b/src/shared/model/Routes.ts index 425ce0b03b..399a8fe852 100644 --- a/src/shared/model/Routes.ts +++ b/src/shared/model/Routes.ts @@ -21,6 +21,8 @@ export const ValidRoutePathsArray = [ '/consent-token/error', '/consent-token/resend', '/consent-token/email-sent', + '/delete', + '/delete/complete', '/error', '/magic-link', //this is not being used until MVP4 '/magic-link/email-sent', //this is not being used until MVP4