Shun Miyazawa hace 3 años
padre
commit
333f196ff8

+ 9 - 1
packages/app/src/components/LoginForm.tsx

@@ -9,6 +9,7 @@ import ReactCardFlip from 'react-card-flip';
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { LoginErrorCode } from '~/interfaces/errors/login-error';
 import { IErrorV3 } from '~/interfaces/errors/v3-error';
+import { successUserActivationEmailSended } from '~/interfaces/user-activation';
 import { toArrayIfNot } from '~/utils/array-utils';
 
 type LoginFormProps = {
@@ -50,6 +51,9 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
   const [passwordForRegister, setPasswordForRegister] = useState('');
   const [registerErrors, setRegisterErrors] = useState<IErrorV3[]>([]);
 
+  // For UserActivation
+  const [successUserActivationEmailSended, setSuccessUserActivationEmailSended] = useState<successUserActivationEmailSended>();
+
   useEffect(() => {
     const { hash } = window.location;
     if (hash === '#register') {
@@ -272,6 +276,10 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
       const res = await apiv3Post(requestPath, { registerForm });
       const { redirectTo } = res.data;
       router.push(redirectTo);
+
+      if (isEmailAuthenticationEnabled) {
+        setSuccessUserActivationEmailSended(res.data);
+      }
     }
     catch (err) {
       // Execute if error exists
@@ -280,7 +288,7 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
       }
     }
     return;
-  }, [emailForRegister, nameForRegister, passwordForRegister, router, usernameForRegister]);
+  }, [emailForRegister, nameForRegister, passwordForRegister, router, usernameForRegister, isEmailAuthenticationEnabled]);
 
   const resetRegisterErrors = useCallback(() => {
     if (registerErrors.length === 0) return;

+ 5 - 0
packages/app/src/interfaces/user-activation.ts

@@ -0,0 +1,5 @@
+export type successUserActivationEmailSended = {
+  redirectTo: string,
+  message: string,
+  email: string,
+}

+ 7 - 2
packages/app/src/server/routes/apiv3/user-activation.ts

@@ -4,6 +4,7 @@ import { ErrorV3 } from '@growi/core';
 import { format, subSeconds } from 'date-fns';
 import { body, validationResult } from 'express-validator';
 
+import { successUserActivationEmailSended } from '~/interfaces/user-activation';
 import UserRegistrationOrder from '~/server/models/user-registration-order';
 
 const PASSOWRD_MINIMUM_NUMBER = 8;
@@ -213,8 +214,12 @@ export const registerAction = (crowi) => {
 
     makeRegistrationEmailToken(email, crowi);
 
-    req.flash('successMessage', req.t('message.successfully_send_email_auth', { email }));
+    const resData: successUserActivationEmailSended = {
+      redirectTo: '/login#login',
+      message: 'message.successfully_send_email_auth',
+      email,
+    };
 
-    return res.redirect('/login');
+    res.apiv3(resData);
   };
 };