Просмотр исходного кода

Pass userRegistrationOrder in nextApp.render

Shun Miyazawa 3 лет назад
Родитель
Сommit
80355eddd1

+ 11 - 3
packages/app/src/pages/user-activation.page.tsx

@@ -3,21 +3,23 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
 
 import CompleteUserRegistrationForm from '~/components/CompleteUserRegistrationForm';
 import { NoLoginLayout } from '~/components/Layout/NoLoginLayout';
+import { IUserRegistrationOrder } from '~/server/models/user-registration-order';
 
 import {
   getServerSideCommonProps, getNextI18NextConfig, useCustomTitle, CommonProps,
 } from './utils/commons';
 
 type Props = CommonProps & {
-  //
+  token: string
+  email: string
 }
 
 const UserActivationPage: NextPage<Props> = (props: Props) => {
   return (
     <NoLoginLayout title={useCustomTitle(props, 'GROWI')}>
       <CompleteUserRegistrationForm
-        token='token'
-        email='admin@example.com'
+        token={props.token}
+        email={props.email}
       />
     </NoLoginLayout>
   );
@@ -45,6 +47,12 @@ export const getServerSideProps: GetServerSideProps = async(context: GetServerSi
 
   const props: Props = result.props as Props;
 
+  if (context.query.userRegistrationOrder != null) {
+    const userRegistrationOrder = context.query.userRegistrationOrder as unknown as IUserRegistrationOrder;
+    props.email = userRegistrationOrder.email;
+    props.token = userRegistrationOrder.token;
+  }
+
   await injectNextI18NextConfigurations(context, props, ['translation']);
 
   return {

+ 2 - 1
packages/app/src/server/routes/index.js

@@ -237,8 +237,9 @@ module.exports = function(crowi, app) {
     .use(forgotPassword.handleErrorsMiddleware(crowi)));
 
   app.get('/_private-legacy-pages', next.delegateToNext);
+
   app.use('/user-activation', express.Router()
-    .get('/:token', applicationInstalled, injectUserRegistrationOrderByTokenMiddleware, userActivation.form)
+    .get('/:token', applicationInstalled, injectUserRegistrationOrderByTokenMiddleware, userActivation.renderUserActivationPage(crowi))
     .use(userActivation.tokenErrorHandlerMiddeware));
 
   app.get('/share/:linkId', next.delegateToNext);

+ 23 - 3
packages/app/src/server/routes/user-activation.ts

@@ -1,6 +1,26 @@
-export const form = (req, res): void => {
-  const { userRegistrationOrder } = req;
-  return res.render('user-activation', { userRegistrationOrder });
+import { Request, Response } from 'express';
+
+import { IUserRegistrationOrder } from '~/server/models/user-registration-order';
+
+type Crowi = {
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  nextApp: any,
+}
+
+type CrowiReq = Request & {
+  crowi: Crowi,
+  userRegistrationOrder: IUserRegistrationOrder
+}
+
+export const renderUserActivationPage = (crowi: Crowi) => {
+  // eslint-disable-next-line @typescript-eslint/no-unused-vars
+  return (req: CrowiReq, res: Response): void => {
+    const { userRegistrationOrder } = req;
+    const { nextApp } = crowi;
+    req.crowi = crowi;
+    nextApp.render(req, res, '/user-activation', { userRegistrationOrder });
+    return;
+  };
 };
 
 // middleware to handle error