Skip to content

Commit

Permalink
fix(Wait Node): Authentication fix (#10236)
Browse files Browse the repository at this point in the history
  • Loading branch information
michael-radency authored and cstuncsik committed Aug 1, 2024
1 parent 0667831 commit 12341e5
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 6 deletions.
14 changes: 9 additions & 5 deletions packages/nodes-base/nodes/Form/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,11 @@ const checkResponseModeConfiguration = (context: IWebhookFunctions) => {
}
};

export async function formWebhook(context: IWebhookFunctions) {
const nodeVersion = context.getNode().typeVersion;
export async function formWebhook(
context: IWebhookFunctions,
authProperty = FORM_TRIGGER_AUTHENTICATION_PROPERTY,
) {
const node = context.getNode();
const options = context.getNodeParameter('options', {}) as {
ignoreBots?: boolean;
respondWithOptions?: {
Expand All @@ -159,9 +162,10 @@ export async function formWebhook(context: IWebhookFunctions) {
const req = context.getRequestObject();

try {
if (options.ignoreBots && isbot(req.headers['user-agent']))
if (options.ignoreBots && isbot(req.headers['user-agent'])) {
throw new WebhookAuthorizationError(403);
await validateWebhookAuthentication(context, FORM_TRIGGER_AUTHENTICATION_PROPERTY);
}
await validateWebhookAuthentication(context, authProperty);
} catch (error) {
if (error instanceof WebhookAuthorizationError) {
res.writeHead(error.responseCode, { 'WWW-Authenticate': 'Basic realm="Webhook"' });
Expand Down Expand Up @@ -310,7 +314,7 @@ export async function formWebhook(context: IWebhookFunctions) {

let { useWorkflowTimezone } = options;

if (useWorkflowTimezone === undefined && nodeVersion > 2) {
if (useWorkflowTimezone === undefined && node.typeVersion > 2) {
useWorkflowTimezone = true;
}

Expand Down
33 changes: 32 additions & 1 deletion packages/nodes-base/nodes/Wait/Wait.node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,14 @@ export class Wait extends Webhook {
inputs: ['main'],
outputs: ['main'],
credentials: credentialsProperty(this.authPropertyName),
hints: [
{
message:
"When testing your workflow using the Editor UI, you can't see the rest of the execution following the Wait node. To inspect the execution results, enable Save Manual Executions in your Workflow settings so you can review the execution results there.",
location: 'outputPane',
whenToDisplay: 'beforeExecution',
},
],
webhooks: [
{
...defaultWebhookDescription,
Expand Down Expand Up @@ -294,6 +302,29 @@ export class Wait extends Webhook {
default: 'timeInterval',
description: 'Determines the waiting mode to use before the workflow continues',
},
{
displayName: 'Authentication',
name: 'incomingAuthentication',
type: 'options',
options: [
{
name: 'Basic Auth',
value: 'basicAuth',
},
{
name: 'None',
value: 'none',
},
],
default: 'none',
description:
'If and how incoming resume-webhook-requests to $execution.resumeFormUrl should be authenticated for additional security',
displayOptions: {
show: {
resume: ['form'],
},
},
},
{
...authenticationProperty(this.authPropertyName),
description:
Expand Down Expand Up @@ -427,7 +458,7 @@ export class Wait extends Webhook {

async webhook(context: IWebhookFunctions) {
const resume = context.getNodeParameter('resume', 0) as string;
if (resume === 'form') return await formWebhook(context);
if (resume === 'form') return await formWebhook(context, this.authPropertyName);
return await super.webhook(context);
}

Expand Down

0 comments on commit 12341e5

Please sign in to comment.