diff --git a/packages/backend/src/controllers/webhooks/handler-by-flow-id.ts b/packages/backend/src/controllers/webhooks/handler-by-flow-id.ts index 6cc1a7c4..b7b98328 100644 --- a/packages/backend/src/controllers/webhooks/handler-by-flow-id.ts +++ b/packages/backend/src/controllers/webhooks/handler-by-flow-id.ts @@ -1,8 +1,7 @@ -import path from 'node:path'; import { Response } from 'express'; import { IRequest } from '@automatisch/types'; -import Step from '../../models/step'; +import Flow from '../../models/flow'; import logger from '../../helpers/logger'; import handler from '../../helpers/webhook-handler'; @@ -13,19 +12,20 @@ export default async (request: IRequest, response: Response) => { query: request.query, params: request.params, }; + logger.debug(`Handling incoming webhook request at ${request.originalUrl}.`); logger.debug(JSON.stringify(computedRequestPayload, null, 2)); const flowId = request.params.flowId; - const triggerStep = await Step.query() - .findOne({ - webhook_path: path.join(request.baseUrl, request.path), - }) - .throwIfNotFound(); - const connection = await triggerStep.$relatedQuery('connection'); + const flow = await Flow.query().findById(flowId).throwIfNotFound(); + const triggerStep = await flow.getTriggerStep(); - if (!await connection.verifyWebhook(request)) { - return response.sendStatus(401); + if (triggerStep.appKey !== 'webhook') { + const connection = await triggerStep.$relatedQuery('connection'); + + if (!(await connection.verifyWebhook(request))) { + return response.sendStatus(401); + } } await handler(flowId, request, response);