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

Merge pull request #4179 from weseek/fix/7183-enable-view-submission-in-check-command-permission-middleware

Fix 7183-enable-view-submission-in-check-command-permission-middleware
Yuki Takei 4 лет назад
Родитель
Сommit
3ddfb471d9

+ 5 - 1
packages/app/src/server/routes/apiv3/slack-integration.js

@@ -64,25 +64,29 @@ module.exports = (crowi) => {
     const permissionsForBroadcastUseCommands = slackAppIntegrationMock.permissionsForBroadcastUseCommands;
     const permissionsForSingleUseCommands = slackAppIntegrationMock.permissionsForSingleUseCommands;
     // MOCK DATA DELETE THIS GW-6972 ---------------
+
     const { supportedCommandsForBroadcastUse, supportedCommandsForSingleUse } = relation;
 
     // get command name from req.body
     let command = '';
     let actionId = '';
     let callbackId = '';
+    let fromChannel = '';
 
     if (!payload) { // when request is to /commands
       command = req.body.text.split(' ')[0];
+      fromChannel = req.body.channel_name;
     }
     else if (payload.actions) { // when request is to /interactions && block_actions
       actionId = payload.actions[0].action_id;
+      fromChannel = payload.channel.name;
     }
     else { // when request is to /interactions && view_submission
       callbackId = payload.view.callback_id;
+      fromChannel = JSON.parse(payload.view.private_metadata).channelName;
     }
 
     // code below checks permission at channel level
-    const fromChannel = req.body.channel_name || payload.channel.name;
     let isPermitted = false;
     [...permissionsForBroadcastUseCommands.keys(), ...permissionsForSingleUseCommands.keys()].forEach((commandName) => {
       // boolean or string[]

+ 1 - 1
packages/app/src/server/service/slack-command-handler/create.js

@@ -34,7 +34,7 @@ module.exports = (crowi) => {
           inputSectionBlock('path', 'Path', 'path_input', false, '/path'),
           inputSectionBlock('contents', 'Contents', 'contents_input', true, 'Input with Markdown...'),
         ],
-        private_metadata: JSON.stringify({ channelId: body.channel_id }),
+        private_metadata: JSON.stringify({ channelId: body.channel_id, channelName: body.channel_name }),
       },
     });
   };