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

Merge pull request #3715 from weseek/feat/create-endpoint-to-save-slack-bot-tokens

Feat/create endpoint to save slack bot tokens
Sizma yosimaz 4 лет назад
Родитель
Сommit
2f1d7db4d4
1 измененных файлов с 38 добавлено и 0 удалено
  1. 38 0
      src/server/routes/apiv3/slack-integration-settings.js

+ 38 - 0
src/server/routes/apiv3/slack-integration-settings.js

@@ -1,3 +1,4 @@
+const mongoose = require('mongoose');
 const express = require('express');
 const { body } = require('express-validator');
 const axios = require('axios');
@@ -264,5 +265,42 @@ module.exports = (crowi) => {
       }
     });
 
+  /**
+   * @swagger
+   *
+   *    /slack-integration/access-token:
+   *      put:
+   *        tags: [SlackIntegration]
+   *        operationId:
+   *        summary: /slack-integration
+   *        description: Generate accessToken
+   *        responses:
+   *          200:
+   *            description: Succeeded to update access token for slack
+   */
+  router.put('/access-tokens', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
+    const SlackAppIntegration = mongoose.model('SlackAppIntegration');
+    let checkTokens;
+    let tokenGtoP;
+    let tokenPtoG;
+    do {
+      // TODO imple generate tokens at GW-5859. The following tokens is temporary.
+      tokenGtoP = 'v2';
+      tokenPtoG = 'v2';
+      // eslint-disable-next-line no-await-in-loop
+      checkTokens = await SlackAppIntegration.findOne({ $or: [{ tokenGtoP }, { tokenPtoG }] });
+    } while (checkTokens != null);
+
+    try {
+      const slackAppTokens = await SlackAppIntegration.create({ tokenGtoP, tokenPtoG });
+      return res.apiv3(slackAppTokens, 200);
+    }
+    catch (error) {
+      const msg = 'Error occured in updating access token for slack app tokens';
+      logger.error('Error', error);
+      return res.apiv3Err(new ErrorV3(msg, 'update-slackAppTokens-failed'), 500);
+    }
+  });
+
   return router;
 };