Skip to content

Instantly share code, notes, and snippets.

@beaucollins
Created October 21, 2020 21:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beaucollins/23f0a5399a8b67995f0857c12de4be3a to your computer and use it in GitHub Desktop.
Save beaucollins/23f0a5399a8b67995f0857c12de4be3a to your computer and use it in GitHub Desktop.
diff --git a/packages/api/src/entrypoints/slack/index.ts b/packages/api/src/entrypoints/slack/index.ts
index 21d9fed..dddd1a8 100644
--- a/packages/api/src/entrypoints/slack/index.ts
+++ b/packages/api/src/entrypoints/slack/index.ts
@@ -1,7 +1,9 @@
import { App, ExpressReceiver, LogLevel } from '@slack/bolt';
-import * as bodyParser from 'body-parser';
+import { verifySignatureAndParseRawBody } from '@slack/bolt/dist/ExpressReceiver';
+import { ConsoleLogger } from '@slack/logger';
import DbEntityGateway from '../../data/dbEntityGateway';
+import Log from '../../utils/Log';
import historyHandler from './slack_bot/history';
import membersHandler from './slack_bot/members';
import { SlackGateway } from './SlackGateway';
@@ -26,12 +28,18 @@ function getSlackApp({
receiver,
});
- receiver.router.use(bodyParser.json());
- receiver.router.post('/slack/webhook', async (req, res) => {
+ const checkSignature = verifySignatureAndParseRawBody(
+ new ConsoleLogger(),
+ signingSecret
+ );
+
+ receiver.router.post('/slack/webhook', checkSignature, async (req, res) => {
const gw = new DbEntityGateway();
const pgw = new SlackGateway(token);
- await new SlackWebhookHandler(gw, pgw).execute(req, res);
+ new SlackWebhookHandler(gw, pgw).execute(req, res).catch((error) => {
+ Log.error(error.message);
+ });
res.send({ challenge: req.body.challenge }); // ack call, prevents retries from webhook
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment