mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-24 04:04:06 -08:00
fix(Wait Node): Authentication fix (#10236)
This commit is contained in:
parent
d6770b5fca
commit
f87854f8db
|
@ -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?: {
|
||||
|
@ -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"' });
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue