zahmis 4 лет назад
Родитель
Сommit
665d3b4812

+ 1 - 0
packages/app/src/server/models/index.js

@@ -18,4 +18,5 @@ module.exports = {
   GlobalNotificationSlackSetting: require('./GlobalNotificationSetting/GlobalNotificationSlackSetting'),
   ShareLink: require('./share-link'),
   SlackAppIntegration: require('./slack-app-integration'),
+  SlackAppIntegrationMock: require('./slack-app-integration-mock'),
 };

+ 11 - 10
packages/app/src/server/routes/apiv3/slack-integration-settings.js

@@ -48,7 +48,8 @@ module.exports = (crowi) => {
   const csrf = require('../../middlewares/csrf')(crowi);
   const apiV3FormValidator = require('../../middlewares/apiv3-form-validator')(crowi);
 
-  const SlackAppIntegration = mongoose.model('SlackAppIntegration');
+  // const SlackAppIntegration = mongoose.model('SlackAppIntegration');
+  const SlackAppIntegrationMock = mongoose.model('SlackAppIntegrationMock');
 
   const validator = {
     BotType: [
@@ -81,7 +82,7 @@ module.exports = (crowi) => {
   };
 
   async function resetAllBotSettings() {
-    await SlackAppIntegration.deleteMany();
+    await SlackAppIntegrationMock.deleteMany();
 
     const params = {
       'slackbot:currentBotType': null,
@@ -182,7 +183,7 @@ module.exports = (crowi) => {
     }
     else {
       try {
-        const slackAppIntegrations = await SlackAppIntegration.find();
+        const slackAppIntegrations = await SlackAppIntegrationMock.find();
         settings.slackAppIntegrations = slackAppIntegrations;
       }
       catch (e) {
@@ -400,16 +401,16 @@ module.exports = (crowi) => {
    *            description: Succeeded to create slack app integration
    */
   router.put('/slack-app-integrations', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
-    const SlackAppIntegrationRecordsNum = await SlackAppIntegration.countDocuments();
+    const SlackAppIntegrationRecordsNum = await SlackAppIntegrationMock.countDocuments();
     if (SlackAppIntegrationRecordsNum >= 10) {
       const msg = 'Not be able to create more than 10 slack workspace integration settings';
       logger.error('Error', msg);
       return res.apiv3Err(new ErrorV3(msg, 'create-slackAppIntegeration-failed'), 500);
     }
 
-    const { tokenGtoP, tokenPtoG } = await SlackAppIntegration.generateUniqueAccessTokens();
+    const { tokenGtoP, tokenPtoG } = await SlackAppIntegrationMock.generateUniqueAccessTokens();
     try {
-      const slackAppTokens = await SlackAppIntegration.create({
+      const slackAppTokens = await SlackAppIntegrationMock.create({
         tokenGtoP,
         tokenPtoG,
         supportedCommandsForBroadcastUse: defaultSupportedCommandsNameForBroadcastUse,
@@ -442,8 +443,8 @@ module.exports = (crowi) => {
     const { slackAppIntegrationId } = req.body;
 
     try {
-      const { tokenGtoP, tokenPtoG } = await SlackAppIntegration.generateUniqueAccessTokens();
-      const slackAppTokens = await SlackAppIntegration.findByIdAndUpdate(slackAppIntegrationId, { tokenGtoP, tokenPtoG });
+      const { tokenGtoP, tokenPtoG } = await SlackAppIntegrationMock.generateUniqueAccessTokens();
+      const slackAppTokens = await SlackAppIntegrationMock.findByIdAndUpdate(slackAppIntegrationId, { tokenGtoP, tokenPtoG });
 
       return res.apiv3(slackAppTokens, 200);
     }
@@ -517,7 +518,7 @@ module.exports = (crowi) => {
     const { id } = req.params;
 
     try {
-      const slackAppIntegration = await SlackAppIntegration.findByIdAndUpdate(
+      const slackAppIntegration = await SlackAppIntegrationMock.findByIdAndUpdate(
         id,
         { supportedCommandsForBroadcastUse, supportedCommandsForSingleUse },
         { new: true },
@@ -572,7 +573,7 @@ module.exports = (crowi) => {
     const { slackAppIntegrationId } = req.body;
     let slackBotToken;
     try {
-      const slackAppIntegration = await SlackAppIntegration.findOne({ _id: slackAppIntegrationId });
+      const slackAppIntegration = await SlackAppIntegrationMock.findOne({ _id: slackAppIntegrationId });
       if (slackAppIntegration == null) {
         const msg = 'Could not find SlackAppIntegration by id';
         return res.apiv3Err(new ErrorV3(msg, 'find-slackAppIntegration-failed'), 400);

+ 9 - 7
packages/app/src/server/routes/apiv3/slack-integration.js

@@ -8,7 +8,8 @@ const { verifySlackRequest, generateWebClient, getSupportedGrowiActionsRegExps }
 
 const logger = loggerFactory('growi:routes:apiv3:slack-integration');
 const router = express.Router();
-const SlackAppIntegration = mongoose.model('SlackAppIntegration');
+// const SlackAppIntegration = mongoose.model('SlackAppIntegration');
+const SlackAppIntegrationMock = mongoose.model('SlackAppIntegrationMock');
 const { respondIfSlackbotError } = require('../../service/slack-command-handler/respond-if-slackbot-error');
 
 module.exports = (crowi) => {
@@ -26,7 +27,7 @@ module.exports = (crowi) => {
       return res.status(400).send({ message });
     }
 
-    const slackAppIntegrationCount = await SlackAppIntegration.countDocuments({ tokenPtoG });
+    const slackAppIntegrationCount = await SlackAppIntegrationMock.countDocuments({ tokenPtoG });
 
     logger.debug('verifyAccessTokenFromProxy', {
       tokenPtoG,
@@ -47,9 +48,10 @@ module.exports = (crowi) => {
   async function checkCommandPermission(req, res, next) {
     const tokenPtoG = req.headers['x-growi-ptog-tokens'];
 
-    const relation = await SlackAppIntegration.findOne({ tokenPtoG });
-    const { supportedCommandsForBroadcastUse, supportedCommandsForSingleUse } = relation;
+    const relation = await SlackAppIntegrationMock.findOne({ tokenPtoG });
+    const { supportedCommandsForBroadcastUse, supportedCommandsForSingleUse, permittedChannelsForEachCommand } = relation;
     const supportedCommands = supportedCommandsForBroadcastUse.concat(supportedCommandsForSingleUse);
+    console.log(relation);
     const supportedGrowiActionsRegExps = getSupportedGrowiActionsRegExps(supportedCommands);
 
     // get command name from req.body
@@ -146,7 +148,7 @@ module.exports = (crowi) => {
       client = generateClientForResponse();
     }
     else {
-      const slackAppIntegration = await SlackAppIntegration.findOne({ tokenPtoG });
+      const slackAppIntegration = await SlackAppIntegrationMock.findOne({ tokenPtoG });
       client = generateClientForResponse(slackAppIntegration.tokenGtoP);
     }
 
@@ -192,7 +194,7 @@ module.exports = (crowi) => {
       client = generateClientForResponse();
     }
     else {
-      const slackAppIntegration = await SlackAppIntegration.findOne({ tokenPtoG });
+      const slackAppIntegration = await SlackAppIntegrationMock.findOne({ tokenPtoG });
       client = generateClientForResponse(slackAppIntegration.tokenGtoP);
     }
 
@@ -237,7 +239,7 @@ module.exports = (crowi) => {
 
   router.get('/supported-commands', verifyAccessTokenFromProxy, async(req, res) => {
     const tokenPtoG = req.headers['x-growi-ptog-tokens'];
-    const slackAppIntegration = await SlackAppIntegration.findOne({ tokenPtoG });
+    const slackAppIntegration = await SlackAppIntegrationMock.findOne({ tokenPtoG });
 
     return res.send(slackAppIntegration);
   });