فهرست منبع

123395 fix user.js

soumaeda 2 سال پیش
والد
کامیت
a77986e0ee
2فایلهای تغییر یافته به همراه41 افزوده شده و 9 حذف شده
  1. 4 3
      apps/app/src/components/Admin/Users/PasswordResetModal.jsx
  2. 37 6
      apps/app/src/server/routes/apiv3/users.js

+ 4 - 3
apps/app/src/components/Admin/Users/PasswordResetModal.jsx

@@ -8,8 +8,8 @@ import {
 
 import AdminUsersContainer from '~/client/services/AdminUsersContainer';
 import { apiv3Put } from '~/client/util/apiv3-client';
-import { toastError } from '~/client/util/toastr';
-
+import { toastSuccess, toastError } from '~/client/util/toastr';
+import { useIsMailerSetup } from '~/stores/context';
 
 class PasswordResetModal extends React.Component {
 
@@ -175,7 +175,8 @@ class PasswordResetModal extends React.Component {
 
 const PasswordResetModalWrapperFC = (props) => {
   const { t } = useTranslation('admin');
-  return <PasswordResetModal t={t} {...props} />;
+  const { data: isMailerSetup } = useIsMailerSetup();
+  return <PasswordResetModal t={t} isMailerSetup={isMailerSetup ?? false} {...props} />;
 };
 
 /**

+ 37 - 6
apps/app/src/server/routes/apiv3/users.js

@@ -185,10 +185,9 @@ module.exports = (crowi) => {
   const sendEmailByUser = async(user) => {
     const { appService, mailService } = crowi;
     const appTitle = appService.getAppTitle();
-    const failedToSendEmailList = [];
+    const failedToSendNewPasswordEmail = [];
 
     try {
-      // eslint-disable-next-line no-await-in-loop
       await mailService.send({
         to: user.email,
         subject: `New password for ${appTitle}`,
@@ -203,13 +202,13 @@ module.exports = (crowi) => {
     }
     catch (err) {
       logger.error(err);
-      failedToSendEmailList.push({
+      failedToSendNewPasswordEmail.push({
         email: user.email,
         reason: err.message,
       });
     }
 
-    return { failedToSendEmailList };
+    return { failedToSendNewPasswordEmail };
   };
 
   /**
@@ -978,7 +977,7 @@ module.exports = (crowi) => {
    *                    description: user id for reset password
    *        responses:
    *          200:
-   *            description: success resrt password
+   *            description: success reset password
    */
   router.put('/reset-password', loginRequiredStrictly, adminRequired, addActivity, async(req, res) => {
     const { id } = req.body;
@@ -997,6 +996,38 @@ module.exports = (crowi) => {
     }
   });
 
+  /**
+   * @swagger
+   *
+   *  paths:
+   *    /users/reset-password-email:
+   *      put:
+   *        tags: [Users]
+   *        operationId: resetPassword
+   *        summary: /users/reset-password-email
+   *        description: send new password email
+   *        requestBody:
+   *          content:
+   *            application/json:
+   *              schema:
+   *                properties:
+   *                  newPassword:
+   *                    type: string
+   *                  user:
+   *                    type: string
+   *                    description: user id for send new password email
+   *        responses:
+   *          200:
+   *            description: success send new password email
+   *            content:
+   *              application/json:
+   *                schema:
+   *                  properties:
+   *                    failedToSendEmail:
+   *                      type: object
+   *                      description: email and reasons for new password email sending failure
+   */
+
   router.put('/reset-password-email', loginRequiredStrictly, adminRequired, addActivity, async(req, res) => {
     const { id } = req.body;
 
@@ -1012,7 +1043,7 @@ module.exports = (crowi) => {
 
       const sendEmail = await sendEmailByUser(userInfo);
 
-      return res.apiv3({ user, failedToSendEmail: sendEmail.failedToSendEmailList[0] });
+      return res.apiv3({ user, failedToSendEmail: sendEmail.failedToSendNewPasswordEmail[0] });
     }
     catch (err) {
       logger.error('Error', err);