Przeglądaj źródła

Merge pull request #3832 from weseek/imprv/gw6100-refactoring-generateAccessTokens

Imprv/gw6100 refactoring generate access tokens
Yuki Takei 4 lat temu
rodzic
commit
d6b76cebf3

+ 19 - 1
src/server/models/slack-app-integration.js

@@ -7,7 +7,7 @@ const schema = new mongoose.Schema({
 });
 });
 class SlackAppIntegration {
 class SlackAppIntegration {
 
 
-  static generateAccessToken() {
+  static generateAccessTokens() {
     const hasher1 = crypto.createHash('sha512');
     const hasher1 = crypto.createHash('sha512');
     const hasher2 = crypto.createHash('sha512');
     const hasher2 = crypto.createHash('sha512');
     const tokenGtoP = hasher1.update(new Date().getTime().toString() + process.env.SALT_FOR_GTOP_TOKEN);
     const tokenGtoP = hasher1.update(new Date().getTime().toString() + process.env.SALT_FOR_GTOP_TOKEN);
@@ -15,6 +15,24 @@ class SlackAppIntegration {
     return [tokenGtoP.digest('base64'), tokenPtoG.digest('base64')];
     return [tokenGtoP.digest('base64'), tokenPtoG.digest('base64')];
   }
   }
 
 
+  static async generateUniqueAccessTokens() {
+    let duplicateTokens;
+    let tokenGtoP;
+    let tokenPtoG;
+    let generateTokens;
+
+    do {
+      generateTokens = this.generateAccessTokens();
+      tokenGtoP = generateTokens[0];
+      tokenPtoG = generateTokens[1];
+      // eslint-disable-next-line no-await-in-loop
+      duplicateTokens = await this.findOne({ $or: [{ tokenGtoP }, { tokenPtoG }] });
+    } while (duplicateTokens != null);
+
+
+    return { tokenGtoP, tokenPtoG };
+  }
+
 }
 }
 
 
 module.exports = function(crowi) {
 module.exports = function(crowi) {

+ 8 - 21
src/server/routes/apiv3/slack-integration-settings.js

@@ -383,26 +383,16 @@ module.exports = (crowi) => {
       return res.apiv3Err(new ErrorV3(msg, 'create-slackAppIntegeration-failed'), 500);
       return res.apiv3Err(new ErrorV3(msg, 'create-slackAppIntegeration-failed'), 500);
     }
     }
 
 
-    let checkTokens;
-    let tokenGtoP;
-    let tokenPtoG;
-    let generateTokens;
-    // TODO: refactering generateAccessTokens by GW-6100
-    do {
-      generateTokens = SlackAppIntegration.generateAccessToken();
-      tokenGtoP = generateTokens[0];
-      tokenPtoG = generateTokens[1];
-      // eslint-disable-next-line no-await-in-loop
-      checkTokens = await SlackAppIntegration.findOne({ $or: [{ tokenGtoP }, { tokenPtoG }] });
-    } while (checkTokens != null);
+    const { tokenGtoP, tokenPtoG } = await SlackAppIntegration.generateUniqueAccessTokens();
+
     try {
     try {
       const slackAppTokens = await SlackAppIntegration.create({ tokenGtoP, tokenPtoG });
       const slackAppTokens = await SlackAppIntegration.create({ tokenGtoP, tokenPtoG });
       return res.apiv3(slackAppTokens, 200);
       return res.apiv3(slackAppTokens, 200);
     }
     }
     catch (error) {
     catch (error) {
-      const msg = 'Error occured in updating access token for slack app tokens';
+      const msg = 'Error occurred during creating slack integration settings procedure';
       logger.error('Error', error);
       logger.error('Error', error);
-      return res.apiv3Err(new ErrorV3(msg, 'update-slackAppTokens-failed'), 500);
+      return res.apiv3Err(new ErrorV3(msg, 'creating-slack-integration-settings-procedure-failed'), 500);
     }
     }
   });
   });
 
 
@@ -419,23 +409,20 @@ module.exports = (crowi) => {
    *          200:
    *          200:
    *            description: Succeeded to regenerate slack app tokens
    *            description: Succeeded to regenerate slack app tokens
    */
    */
-  // TODO: refactering generateAccessTokens by GW-6100
   router.put('/regenerate-tokens', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
   router.put('/regenerate-tokens', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
 
 
     const { slackAppIntegrationId } = req.body;
     const { slackAppIntegrationId } = req.body;
 
 
     try {
     try {
-      const generateTokens = SlackAppIntegration.generateAccessToken();
-      const newTokenGtoP = generateTokens[0];
-      const newTokenPtoG = generateTokens[1];
-      const slackAppTokens = await SlackAppIntegration.findOneAndUpdate({ _id: slackAppIntegrationId }, { tokenGtoP: newTokenGtoP, tokenPtoG: newTokenPtoG });
+      const { tokenGtoP, tokenPtoG } = await SlackAppIntegration.generateUniqueAccessTokens();
+      const slackAppTokens = await SlackAppIntegration.findOneAndUpdate({ _id: slackAppIntegrationId }, { tokenGtoP, tokenPtoG });
 
 
       return res.apiv3(slackAppTokens, 200);
       return res.apiv3(slackAppTokens, 200);
     }
     }
     catch (error) {
     catch (error) {
-      const msg = 'Error occured in updating access token for slack app tokens';
+      const msg = 'Error occurred during regenerating slack app tokens';
       logger.error('Error', error);
       logger.error('Error', error);
-      return res.apiv3Err(new ErrorV3(msg, 'update-slackAppTokens-failed'), 500);
+      return res.apiv3Err(new ErrorV3(msg, 'regenerating-slackAppTokens-failed'), 500);
     }
     }
   });
   });