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

Separated the user creation and mail sending processes.

Shun Miyazawa 4 лет назад
Родитель
Сommit
c62c5b935d
2 измененных файлов с 18 добавлено и 7 удалено
  1. 1 5
      src/server/models/user.js
  2. 17 2
      src/server/routes/apiv3/users.js

+ 1 - 5
src/server/models/user.js

@@ -610,7 +610,7 @@ module.exports = function(crowi) {
 
   };
 
-  userSchema.statics.createUsersByInvitation = async function(emailList, toSendEmail) {
+  userSchema.statics.createUsersByInvitation = async function(emailList) {
     validateCrowi();
 
     if (!Array.isArray(emailList)) {
@@ -619,10 +619,6 @@ module.exports = function(crowi) {
 
     const afterWorkEmailList = await this.createUsersByEmailList(emailList);
 
-    if (toSendEmail) {
-      await this.sendEmailbyUserList(afterWorkEmailList.createdUserList);
-    }
-
     return afterWorkEmailList;
   };
 

+ 17 - 2
src/server/routes/apiv3/users.js

@@ -357,13 +357,28 @@ module.exports = (crowi) => {
    *                      description: Users email that already exists
    */
   router.post('/invite', loginRequiredStrictly, adminRequired, csrf, validator.inviteEmail, apiV3FormValidator, async(req, res) => {
+
+    let invitedUserList;
+
+    // Create users
     try {
-      const invitedUserList = await User.createUsersByInvitation(req.body.shapedEmailList, req.body.sendEmail);
+      invitedUserList = await User.createUsersByInvitation(req.body.shapedEmailList);
+    }
+    catch {
+      const msg = 'Failed to create user';
+      return res.apiv3Err(new ErrorV3(msg));
+    }
+
+    // Send email
+    try {
+      if (req.body.sendEmail) {
+        await User.sendEmailbyUserList(invitedUserList.createdUserList);
+      }
       return res.apiv3({ invitedUserList }, 201);
     }
     catch (err) {
       const msg = 'Failed to send mail';
-      return res.apiv3Err(new ErrorV3(msg));
+      return res.apiv3Err(new ErrorV3(msg, invitedUserList.createdUserList));
     }
   });