Bläddra i källkod

update conditional branches

WNomunomu 2 år sedan
förälder
incheckning
dae9693c37

+ 14 - 0
apps/app/src/server/models/user.js

@@ -144,6 +144,20 @@ module.exports = function(crowi) {
     return hasher.digest('base64');
     return hasher.digest('base64');
   }
   }
 
 
+  userSchema.methods.isUniqueEmail = async function() {
+    const User = this.model('User');
+
+    const userData = await User.findOne({ email: this.email });
+
+    if (userData) {
+      if (this.username === userData.username) {
+        return true;
+      }
+      return false;
+    }
+    return true;
+  };
+
   userSchema.methods.isPasswordSet = function() {
   userSchema.methods.isPasswordSet = function() {
     if (this.password) {
     if (this.password) {
       return true;
       return true;

+ 15 - 1
apps/app/src/server/routes/apiv3/personal-setting.js

@@ -238,6 +238,15 @@ module.exports = (crowi) => {
       user.isEmailPublished = req.body.isEmailPublished;
       user.isEmailPublished = req.body.isEmailPublished;
       user.slackMemberId = req.body.slackMemberId;
       user.slackMemberId = req.body.slackMemberId;
 
 
+      const isUniqueEmail = await user.isUniqueEmail();
+
+      if (isUniqueEmail) {
+        logger.error('email-is-unique');
+      }
+      else {
+        throw new Error('email-is-not-unique');
+      }
+
       const updatedUser = await user.save();
       const updatedUser = await user.save();
 
 
       const parameters = { action: SupportedAction.ACTION_USER_PERSONAL_SETTINGS_UPDATE };
       const parameters = { action: SupportedAction.ACTION_USER_PERSONAL_SETTINGS_UPDATE };
@@ -247,7 +256,12 @@ module.exports = (crowi) => {
     }
     }
     catch (err) {
     catch (err) {
       logger.error(err);
       logger.error(err);
-      return res.apiv3Err(err);
+
+      if (err.message === 'email-is-not-unique') {
+        return res.apiv3Err('email-is-already-in-use');
+      }
+
+      return res.apiv3Err('update-personal-data-failed');
     }
     }
 
 
   });
   });

+ 2 - 2
apps/app/src/stores/personal-settings.tsx

@@ -68,9 +68,9 @@ export const usePersonalSettings = (config?: SWRConfiguration): SWRResponse<IUse
     }
     }
     catch (err) {
     catch (err) {
       logger.error(err);
       logger.error(err);
-      const message = err[0].message;
+      const code = err[0].message;
 
 
-      if (message.includes('User validation failed: email: Error, expected `email` to be unique.')) {
+      if (code === 'email-is-already-in-use') {
         throw new Error('The email is already in use');
         throw new Error('The email is already in use');
       }
       }