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

add url verification in middleware

zahmis 4 лет назад
Родитель
Сommit
38f5678224

+ 4 - 14
packages/slackbot-proxy/src/controllers/slack.ts

@@ -1,5 +1,5 @@
 import {
-  BodyParams, Controller, Get, Inject, PlatformResponse, Post, Req, Res, UseBefore,
+  Controller, Get, Inject, PlatformResponse, Post, Req, Res, UseBefore,
 } from '@tsed/common';
 
 import axios from 'axios';
@@ -325,16 +325,8 @@ export class SlackCtrl {
   }
 
   @Post('/events')
-  @UseBefore(AuthorizeCommandMiddleware)
-  async handleEvent(@Req() req: SlackOauthReq, @BodyParams() body:{[key:string]:string} /* , @Res() res: Res */): Promise<void|string> {
-
-    // eslint-disable-next-line max-len
-    // see: https://api.slack.com/apis/connections/events-api#the-events-api__subscribing-to-event-types__events-api-request-urls__request-url-configuration--verification
-    if (body.type === 'url_verification') {
-      return body.challenge;
-    }
-
-    logger.info('receive event', body);
+  @UseBefore(AuthorizeEventsMiddleware)
+  async handleEvent(@Req() req: SlackOauthReq): Promise<void|string> {
 
     const { authorizeResult } = req;
     if (authorizeResult.botToken == null) {
@@ -342,9 +334,7 @@ export class SlackCtrl {
     }
     const client = generateWebClient(authorizeResult.botToken);
 
-    const event: any = body.event;
-
-    await postWelcomeMessage(client, event.channel);
+    await postWelcomeMessage(client, req.body.event.channel);
 
     return;
   }

+ 6 - 3
packages/slackbot-proxy/src/middlewares/slack-to-growi/authorizer.ts

@@ -27,9 +27,6 @@ export class AuthorizeCommandMiddleware implements IMiddleware {
 
   async use(@Req() req: SlackOauthReq, @Res() res: Res): Promise<void> {
     const { body } = req;
-
-    console.log(body);
-
     // extract id from body
     const teamId = body.team_id;
     const enterpriseId = body.enterprise_id;
@@ -151,6 +148,12 @@ export class AuthorizeEventsMiddleware implements IMiddleware {
 
   async use(@Req() req: SlackOauthReq, @Res() res: Res): Promise<void> {
 
+    // eslint-disable-next-line max-len
+    // see: https://api.slack.com/apis/connections/events-api#the-events-api__subscribing-to-event-types__events-api-request-urls__request-url-configuration--verification
+    if (req.body.type === 'url_verification') {
+      return req.body.challenge;
+    }
+
     const { body } = req;
     // extract id from body
     const teamId = body.team_id;