1- import express from 'express' ;
1+ import express , { Router } from 'express' ;
22import cors from 'cors' ;
33import cookieParser from 'cookie-parser' ;
44import { getUserAndOrganization , prodHeaders , requireJwtDev , requireJwtProd } from './src/utils/auth.utils.js' ;
@@ -16,7 +16,8 @@ import wbsElementTemplatesRouter from './src/routes/wbs-element-templates.routes
1616import carsRouter from './src/routes/cars.routes.js' ;
1717import organizationRouter from './src/routes/organizations.routes.js' ;
1818import recruitmentRouter from './src/routes/recruitment.routes.js' ;
19- import { slackEvents } from './src/routes/slack.routes.js' ;
19+ import { getReceiver } from './src/integrations/slack.js' ;
20+ import './src/routes/slack.routes.js' ;
2021import announcementsRouter from './src/routes/announcements.routes.js' ;
2122import onboardingRouter from './src/routes/onboarding.routes.js' ;
2223import popUpsRouter from './src/routes/pop-up.routes.js' ;
@@ -25,6 +26,7 @@ import retrospectiveRouter from './src/routes/retrospective.routes.js';
2526import partsRouter from './src/routes/parts.routes.js' ;
2627import financeRouter from './src/routes/finance.routes.js' ;
2728import calendarRouter from './src/routes/calendar.routes.js' ;
29+ import prospectiveSponsorRouter from './src/routes/prospective-sponsor.routes.js' ;
2830
2931const app = express ( ) ;
3032
@@ -61,9 +63,15 @@ const options: cors.CorsOptions = {
6163 allowedHeaders
6264} ;
6365
64- // so we can listen to slack messages
65- // NOTE: must be done before using json
66- app . use ( '/slack' , slackEvents . requestListener ( ) ) ;
66+ // Mount Slack Bolt receiver BEFORE other middleware to handle raw body parsing
67+ // Bolt's receiver handles its own body parsing and request verification
68+ // The receiver is configured to handle requests at /slack/events
69+ // Only mount if Slack is configured (when SLACK_BOT_TOKEN is set)
70+ const receiver = getReceiver ( ) ;
71+ if ( receiver ) {
72+ app . use ( receiver . router as unknown as Router ) ;
73+ }
74+
6775app . get ( '/health' , ( _req , res ) => {
6876 res . status ( 200 ) . json ( { status : 'healthy' } ) ;
6977} ) ;
@@ -103,6 +111,7 @@ app.use('/retrospective', retrospectiveRouter);
103111app . use ( '/parts' , partsRouter ) ;
104112app . use ( '/finance' , financeRouter ) ;
105113app . use ( '/calendar' , calendarRouter ) ;
114+ app . use ( '/prospective-sponsors' , prospectiveSponsorRouter ) ;
106115app . use ( '/' , ( _req , res ) => {
107116 res . status ( 200 ) . json ( 'Welcome to FinishLine' ) ;
108117} ) ;
0 commit comments