Taichi Masuyama 4 лет назад
Родитель
Сommit
b47163ffb4

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

@@ -426,8 +426,6 @@ module.exports = (crowi) => {
         permissionsForBroadcastUseCommands: initialSupportedCommandsForBroadcastUse,
         permissionsForSingleUseCommands: initialSupportedCommandsForSingleUse,
       });
-      console.log('ここやでえ');
-      console.log(slackAppTokensMOCK);
       // MOCK DATA DELETE THIS GW-6972 ---------------
       return res.apiv3(slackAppTokensMOCK, 200);
     }
@@ -547,11 +545,10 @@ module.exports = (crowi) => {
       const SlackAppIntegrationMock = mongoose.model('SlackAppIntegrationMock');
       // MOCK DATA FROM CLIENT assume that these data were sent from client
       const permissionsForBroadcastUseCommandsFromClient = {
-        search: true,
+        search: false,
       };
       const permissionsForSingleUseCommandsFromClient = {
-        create: false,
-        togetter: ['random', 'admin'],
+        create: ['random'],
       };
       const slackAppIntegrationMock = await SlackAppIntegrationMock.findOneAndUpdate(
         // MOCK DATA USE id IN req.params LIKE ABOVE

+ 8 - 5
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('SlackAppIntegrationMock');
+const SlackAppIntegrationMock = mongoose.model('SlackAppIntegrationMock');
 const { respondIfSlackbotError } = require('../../service/slack-command-handler/respond-if-slackbot-error');
 
 module.exports = (crowi) => {
@@ -26,14 +27,15 @@ module.exports = (crowi) => {
       return res.status(400).send({ message });
     }
 
-    const slackAppIntegrationCount = await SlackAppIntegration.countDocuments({ tokenPtoG });
+    // MOCK DATA MODIFY THIS WITH SlackAppIntegration GW-7006 --------------
+    const slackAppIntegrationMockCount = await SlackAppIntegrationMock.countDocuments({ tokenPtoG });
 
     logger.debug('verifyAccessTokenFromProxy', {
       tokenPtoG,
-      slackAppIntegrationCount,
+      slackAppIntegrationMockCount,
     });
 
-    if (slackAppIntegrationCount === 0) {
+    if (slackAppIntegrationMockCount === 0) {
       return res.status(403).send({
         message: 'The access token that identifies the request source is slackbot-proxy is invalid. Did you setup with `/growi register`.\n'
         + 'Or did you delete registration for GROWI ? if so, the link with GROWI has been disconnected. '
@@ -260,7 +262,8 @@ module.exports = (crowi) => {
     // MOCK DATA DELETE THIS GW-6972 ---------
     const SlackAppIntegrationMock = mongoose.model('SlackAppIntegrationMock');
     const slackAppIntegrationMock = await SlackAppIntegrationMock.findOne({ tokenPtoG });
-    return res.apiv3({ slackAppIntegrationMock });
+    const { permissionsForBroadcastUseCommands, permissionsForSingleUseCommands } = slackAppIntegrationMock;
+    return res.apiv3({ permissionsForBroadcastUseCommands, permissionsForSingleUseCommands });
     // MOCK DATA DELETE THIS GW-6972 ---------
 
     // const slackAppIntegration = await SlackAppIntegration.findOne({ tokenPtoG });

+ 1 - 1
packages/slack/src/middlewares/verify-growi-to-slack-request.ts

@@ -4,7 +4,7 @@ import createError from 'http-errors';
 import loggerFactory from '../utils/logger';
 import { RequestFromGrowi } from '../interfaces/request-between-growi-and-proxy';
 
-const logger = loggerFactory('@growi/slack:middlewares:verify-slack-request');
+const logger = loggerFactory('@growi/slack:middlewares:verify-growi-to-slack-request');
 
 /**
  * Verify if the request came from slack

+ 7 - 7
packages/slackbot-proxy/src/controllers/growi-to-slack.ts

@@ -213,7 +213,7 @@ export class GrowiToSlackCtrl {
         tokenPtoG: order.tokenPtoG,
         growiUri: order.growiUrl,
         permissionsForBroadcastUseCommands: req.body.permissionsForBroadcastUseCommands,
-        permissionsForSingleUseCommands: req.body.permissionsForBroadcastUseCommands,
+        permissionsForSingleUseCommands: req.body.permissionsForSingleUseCommands,
         expiredAtCommands,
       })
       // https://github.com/typeorm/typeorm/issues/1090#issuecomment-634391487
@@ -225,9 +225,9 @@ export class GrowiToSlackCtrl {
     // MOCK DATA DELETE THIS GW-6972 7004 ---------------
 
     // Find the generated relation
-    const generatedRelation = await this.relationRepository.findOne({ id: response.identifiers[0].id });
+    const generatedRelationMock = await this.relationMockRepository.findOne({ id: response.identifiers[0].id });
 
-    return res.send({ relation: generatedRelation, slackBotToken: token });
+    return res.send({ relationMock: generatedRelationMock, slackBotToken: token });
   }
 
   injectGrowiUri(req: GrowiReq, growiUri: string): void {
@@ -274,16 +274,16 @@ export class GrowiToSlackCtrl {
     const tokenGtoP = tokenGtoPs[0];
 
     // retrieve relation with Installation
-    const relation = await this.relationRepository.createQueryBuilder('relation')
+    const relationMock = await this.relationMockRepository.createQueryBuilder('relation')
       .where('tokenGtoP = :token', { token: tokenGtoP })
       .leftJoinAndSelect('relation.installation', 'installation')
       .getOne();
 
-    if (relation == null) {
+    if (relationMock == null) {
       return res.webClientErr('relation is invalid', 'invalid_relation');
     }
 
-    const token = relation.installation.data.bot?.token;
+    const token = relationMock.installation.data.bot?.token;
     if (token == null) {
       return res.webClientErr('installation is invalid', 'invalid_installation');
     }
@@ -291,7 +291,7 @@ export class GrowiToSlackCtrl {
     const client = generateWebClient(token);
 
     try {
-      this.injectGrowiUri(req, relation.growiUri);
+      this.injectGrowiUri(req, relationMock.growiUri);
 
       const opt = req.body;
       opt.headers = req.headers;

+ 2 - 3
packages/slackbot-proxy/src/services/RelationsService.ts

@@ -32,12 +32,11 @@ export class RelationsService {
     /**
      * this code represents the update of cache (Relation schema) using request from GROWI
      */
-    const { permissionsForBroadcastUseCommands, permissionsForSingleUseCommands } = res.data;
+    const { permissionsForBroadcastUseCommands, permissionsForSingleUseCommands } = res.data.data;
     if (relationMock !== null) {
       relationMock.permissionsForBroadcastUseCommands = permissionsForBroadcastUseCommands;
       relationMock.permissionsForSingleUseCommands = permissionsForSingleUseCommands;
       relationMock.expiredAtCommands = addHours(new Date(), 48);
-
       return this.relationMockRepository.save(relationMock);
     }
     throw Error('No relation mock exists.');
@@ -80,7 +79,7 @@ export class RelationsService {
     }
     // MOCK DATA THIS CODE SHOULD BE IMPLEMENTED IN GW-7017
     // return relationMock.supportedCommandsForSingleUse.includes(growiCommandType);
-    return true;
+    return false;
     // MOCK DATA THIS CODE SHOULD BE IMPLEMENTED IN GW-7017
   }