From 5dfa6913c38fd79e1f91df882ef1a76e43ef0a10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 11 Aug 2021 07:48:12 +0200 Subject: [PATCH] Refactor 'sendMail' to a general helper --- .../src/middleware/email/emailMiddleware.js | 40 +---------------- .../src/middleware/helpers/email/sendMail.js | 44 +++++++++++++++++++ .../{ => helpers}/email/templateBuilder.js | 4 +- .../email/templates/emailVerification.html | 0 .../{ => helpers}/email/templates/index.js | 0 .../{ => helpers}/email/templates/layout.html | 0 .../email/templates/resetPassword.html | 0 .../{ => helpers}/email/templates/signup.html | 0 .../email/templates/wrongAccount.html | 0 9 files changed, 48 insertions(+), 40 deletions(-) create mode 100644 backend/src/middleware/helpers/email/sendMail.js rename backend/src/middleware/{ => helpers}/email/templateBuilder.js (96%) rename backend/src/middleware/{ => helpers}/email/templates/emailVerification.html (100%) rename backend/src/middleware/{ => helpers}/email/templates/index.js (100%) rename backend/src/middleware/{ => helpers}/email/templates/layout.html (100%) rename backend/src/middleware/{ => helpers}/email/templates/resetPassword.html (100%) rename backend/src/middleware/{ => helpers}/email/templates/signup.html (100%) rename backend/src/middleware/{ => helpers}/email/templates/wrongAccount.html (100%) diff --git a/backend/src/middleware/email/emailMiddleware.js b/backend/src/middleware/email/emailMiddleware.js index 571b733d5..b7fe0239a 100644 --- a/backend/src/middleware/email/emailMiddleware.js +++ b/backend/src/middleware/email/emailMiddleware.js @@ -1,46 +1,10 @@ -import CONFIG from '../../config' -import nodemailer from 'nodemailer' -import { htmlToText } from 'nodemailer-html-to-text' +import { sendMail } from '../helpers/email/sendMail' import { signupTemplate, resetPasswordTemplate, wrongAccountTemplate, emailVerificationTemplate, -} from './templateBuilder' - -const hasEmailConfig = CONFIG.SMTP_HOST && CONFIG.SMTP_PORT -const hasAuthData = CONFIG.SMTP_USERNAME && CONFIG.SMTP_PASSWORD - -let sendMail = () => {} -if (!hasEmailConfig) { - if (!CONFIG.TEST) { - // eslint-disable-next-line no-console - console.log('Warning: Email middleware will not try to send mails.') - } -} else { - sendMail = async (templateArgs) => { - const transporter = nodemailer.createTransport({ - host: CONFIG.SMTP_HOST, - port: CONFIG.SMTP_PORT, - ignoreTLS: CONFIG.SMTP_IGNORE_TLS, - secure: CONFIG.SMTP_SECURE, // true for 465, false for other ports - auth: hasAuthData && { - user: CONFIG.SMTP_USERNAME, - pass: CONFIG.SMTP_PASSWORD, - }, - }) - - transporter.use( - 'compile', - htmlToText({ - ignoreImage: true, - wordwrap: false, - }), - ) - - await transporter.sendMail(templateArgs) - } -} +} from '../helpers/email/templateBuilder' const sendSignupMail = async (resolve, root, args, context, resolveInfo) => { const { inviteCode } = args diff --git a/backend/src/middleware/helpers/email/sendMail.js b/backend/src/middleware/helpers/email/sendMail.js new file mode 100644 index 000000000..9886b88e2 --- /dev/null +++ b/backend/src/middleware/helpers/email/sendMail.js @@ -0,0 +1,44 @@ +import CONFIG from '../../../config' +import nodemailer from 'nodemailer' +import { htmlToText } from 'nodemailer-html-to-text' + +const hasEmailConfig = CONFIG.SMTP_HOST && CONFIG.SMTP_PORT +const hasAuthData = CONFIG.SMTP_USERNAME && CONFIG.SMTP_PASSWORD + +// Wolle +// let sendMailCallback = async () => {} +// Wolle +let sendMailCallback = async (templateArgs) => { + console.log('templateArgs: ', templateArgs) +} +if (!hasEmailConfig) { + if (!CONFIG.TEST) { + // eslint-disable-next-line no-console + console.log('Warning: Email middleware will not try to send mails.') // Wolle + } +} else { + sendMailCallback = async (templateArgs) => { + const transporter = nodemailer.createTransport({ + host: CONFIG.SMTP_HOST, + port: CONFIG.SMTP_PORT, + ignoreTLS: CONFIG.SMTP_IGNORE_TLS, + secure: CONFIG.SMTP_SECURE, // true for 465, false for other ports + auth: hasAuthData && { + user: CONFIG.SMTP_USERNAME, + pass: CONFIG.SMTP_PASSWORD, + }, + }) + + transporter.use( + 'compile', + htmlToText({ + ignoreImage: true, + wordwrap: false, + }), + ) + + await transporter.sendMail(templateArgs) + } +} + +export const sendMail = sendMailCallback diff --git a/backend/src/middleware/email/templateBuilder.js b/backend/src/middleware/helpers/email/templateBuilder.js similarity index 96% rename from backend/src/middleware/email/templateBuilder.js rename to backend/src/middleware/helpers/email/templateBuilder.js index 872b86b29..9de26f48e 100644 --- a/backend/src/middleware/email/templateBuilder.js +++ b/backend/src/middleware/helpers/email/templateBuilder.js @@ -1,6 +1,6 @@ import mustache from 'mustache' -import CONFIG from '../../config' -import logosWebapp from '../../config/logos.js' +import CONFIG from '../../../config' +import logosWebapp from '../../../config/logos.js' import * as templates from './templates' diff --git a/backend/src/middleware/email/templates/emailVerification.html b/backend/src/middleware/helpers/email/templates/emailVerification.html similarity index 100% rename from backend/src/middleware/email/templates/emailVerification.html rename to backend/src/middleware/helpers/email/templates/emailVerification.html diff --git a/backend/src/middleware/email/templates/index.js b/backend/src/middleware/helpers/email/templates/index.js similarity index 100% rename from backend/src/middleware/email/templates/index.js rename to backend/src/middleware/helpers/email/templates/index.js diff --git a/backend/src/middleware/email/templates/layout.html b/backend/src/middleware/helpers/email/templates/layout.html similarity index 100% rename from backend/src/middleware/email/templates/layout.html rename to backend/src/middleware/helpers/email/templates/layout.html diff --git a/backend/src/middleware/email/templates/resetPassword.html b/backend/src/middleware/helpers/email/templates/resetPassword.html similarity index 100% rename from backend/src/middleware/email/templates/resetPassword.html rename to backend/src/middleware/helpers/email/templates/resetPassword.html diff --git a/backend/src/middleware/email/templates/signup.html b/backend/src/middleware/helpers/email/templates/signup.html similarity index 100% rename from backend/src/middleware/email/templates/signup.html rename to backend/src/middleware/helpers/email/templates/signup.html diff --git a/backend/src/middleware/email/templates/wrongAccount.html b/backend/src/middleware/helpers/email/templates/wrongAccount.html similarity index 100% rename from backend/src/middleware/email/templates/wrongAccount.html rename to backend/src/middleware/helpers/email/templates/wrongAccount.html