diff --git a/packages/nodes-base/credentials/RabbitMQ.credentials.ts b/packages/nodes-base/credentials/RabbitMQ.credentials.ts index 046650f58..6c69dfc0c 100644 --- a/packages/nodes-base/credentials/RabbitMQ.credentials.ts +++ b/packages/nodes-base/credentials/RabbitMQ.credentials.ts @@ -1,5 +1,6 @@ import { ICredentialType, + IDisplayOptions, NodePropertyTypes, } from 'n8n-workflow'; @@ -51,8 +52,22 @@ export class RabbitMQ implements ICredentialType { default: false, }, { - displayName: 'Client Certificate', - name: 'cert', + displayName: 'Passwordless', + name: 'passwordless', + type: 'boolean' as NodePropertyTypes, + displayOptions: { + show: { + ssl: [ + true, + ], + }, + }, + default: false, + description: 'Passwordless connection with certificates (SASL mechanism EXTERNAL)', + }, + { + displayName: 'CA Certificates', + name: 'ca', type: 'string' as NodePropertyTypes, typeOptions: { password: true, @@ -65,6 +80,26 @@ export class RabbitMQ implements ICredentialType { }, }, default: '', + description: 'SSL CA Certificates to use.', + }, + { + displayName: 'Client Certificate', + name: 'cert', + type: 'string' as NodePropertyTypes, + typeOptions: { + password: true, + }, + displayOptions: { + show: { + ssl: [ + true, + ], + passwordless: [ + true, + ], + }, + } as IDisplayOptions, + default: '', description: 'SSL Client Certificate to use.', }, { @@ -79,6 +114,9 @@ export class RabbitMQ implements ICredentialType { ssl: [ true, ], + passwordless: [ + true, + ], }, }, default: '', @@ -96,31 +134,13 @@ export class RabbitMQ implements ICredentialType { ssl: [ true, ], - }, - }, - default: '', - description: 'SSL passphrase to use.', - }, - { - displayName: 'CA Certificates', - name: 'ca', - type: 'string' as NodePropertyTypes, - typeOptions: { - password: true, - }, - // typeOptions: { - // multipleValues: true, - // multipleValueButtonText: 'Add Certificate', - // }, - displayOptions: { - show: { - ssl: [ + passwordless: [ true, ], }, }, default: '', - description: 'SSL CA Certificates to use.', + description: 'SSL passphrase to use.', }, // { // displayName: 'Client ID', diff --git a/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts b/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts index 527b9dd55..2b3fc6783 100644 --- a/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts +++ b/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts @@ -26,11 +26,13 @@ export async function rabbitmqConnect(this: IExecuteFunctions | ITriggerFunction if (credentials.ssl === true) { credentialData.protocol = 'amqps'; - optsData.cert = credentials.cert === '' ? undefined : Buffer.from(credentials.cert as string); - optsData.key = credentials.key === '' ? undefined : Buffer.from(credentials.key as string); - optsData.passphrase = credentials.passphrase === '' ? undefined : credentials.passphrase; optsData.ca = credentials.ca === '' ? undefined : [Buffer.from(credentials.ca as string)]; - optsData.credentials = amqplib.credentials.external(); + if (credentials.passwordless === true) { + optsData.cert = credentials.cert === '' ? undefined : Buffer.from(credentials.cert as string); + optsData.key = credentials.key === '' ? undefined : Buffer.from(credentials.key as string); + optsData.passphrase = credentials.passphrase === '' ? undefined : credentials.passphrase; + optsData.credentials = amqplib.credentials.external(); + } }