From 647372be275c46e9963c96163c9e913a17f13e5f Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 20 Oct 2023 11:36:40 +0100 Subject: [PATCH] feat(core): Add support for oauth based service accounts with UM SMTP (#7311) This PR adds support for using OAuth based service accounts for the User Management SMTP connection. Tested using a Google Service Account. --- .../cli/src/UserManagement/email/NodeMailer.ts | 14 ++++++++++++++ packages/cli/src/config/schema.ts | 12 ++++++++++++ 2 files changed, 26 insertions(+) diff --git a/packages/cli/src/UserManagement/email/NodeMailer.ts b/packages/cli/src/UserManagement/email/NodeMailer.ts index fbf58ca4b6..106ac14bc9 100644 --- a/packages/cli/src/UserManagement/email/NodeMailer.ts +++ b/packages/cli/src/UserManagement/email/NodeMailer.ts @@ -26,6 +26,20 @@ export class NodeMailer { }; } + if ( + config.getEnv('userManagement.emails.smtp.auth.serviceClient') && + config.getEnv('userManagement.emails.smtp.auth.privateKey') + ) { + transportConfig.auth = { + type: 'OAuth2', + user: config.getEnv('userManagement.emails.smtp.auth.user'), + serviceClient: config.getEnv('userManagement.emails.smtp.auth.serviceClient'), + privateKey: config + .getEnv('userManagement.emails.smtp.auth.privateKey') + .replace(/\\n/g, '\n'), + }; + } + this.transport = createTransport(transportConfig); } diff --git a/packages/cli/src/config/schema.ts b/packages/cli/src/config/schema.ts index a7bef6f5cc..021b9f4588 100644 --- a/packages/cli/src/config/schema.ts +++ b/packages/cli/src/config/schema.ts @@ -767,6 +767,18 @@ export const schema = { default: '', env: 'N8N_SMTP_PASS', }, + serviceClient: { + doc: 'SMTP OAuth Service Client', + format: String, + default: '', + env: 'N8N_SMTP_OAUTH_SERVICE_CLIENT', + }, + privateKey: { + doc: 'SMTP OAuth Private Key', + format: String, + default: '', + env: 'N8N_SMTP_OAUTH_PRIVATE_KEY', + }, }, sender: { doc: 'How to display sender name',