From 4e118b65ee8389bca6083f19c2109d3eea414c1f Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Sat, 6 Nov 2021 00:57:05 +0100 Subject: [PATCH] - make sendEMails external (utils) - replace fromHex from libsodium-wrapper --- .../graphql/resolver/TransactionResolver.ts | 28 ++----------------- backend/src/util/sendEMail.ts | 26 +++++++++++++++++ 2 files changed, 28 insertions(+), 26 deletions(-) create mode 100644 backend/src/util/sendEMail.ts diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 70dfdc505..afdd87156 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -4,9 +4,9 @@ import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql' import { getCustomRepository, getConnection, QueryRunner } from 'typeorm' -import { createTransport } from 'nodemailer' import CONFIG from '../../config' +import { sendEMail } from '../../util/sendEMail' import { Transaction } from '../model/Transaction' import { TransactionList } from '../model/TransactionList' @@ -33,7 +33,6 @@ import { calculateDecay, calculateDecayWithInterval } from '../../util/decay' import { TransactionTypeId } from '../enum/TransactionTypeId' import { TransactionType } from '../enum/TransactionType' import { hasUserAmount, isHexPublicKey } from '../../util/validate' -import { from_hex as fromHex } from 'libsodium-wrappers' /* # Test @@ -201,29 +200,6 @@ INSERT INTO `transaction_signatures` (`id`, `transaction_id`, `signature`, `pubk (1, 1, 0x60d632479707e5d01cdc32c3326b5a5bae11173a0c06b719ee7b552f9fd644de1a0cd4afc207253329081d39dac1a63421f51571d836995c649fc39afac7480a, 0x48c45cb4fea925e83850f68f2fa8f27a1a4ed1bcba68cdb59fcd86adef3f52ee); */ -const sendEMail = async (emailDef: any): Promise => { - if (!CONFIG.EMAIL) { - // eslint-disable-next-line no-console - console.log('Emails are disabled via config') - return false - } - const transporter = createTransport({ - host: CONFIG.EMAIL_SMTP_URL, - port: Number(CONFIG.EMAIL_SMTP_PORT), - secure: false, // true for 465, false for other ports - requireTLS: true, - auth: { - user: CONFIG.EMAIL_USERNAME, - pass: CONFIG.EMAIL_PASSWORD, - }, - }) - const info = await transporter.sendMail(emailDef) - if (!info.messageId) { - throw new Error('error sending notification email, but transaction succeed') - } - return true -} - // Helper function async function calculateAndAddDecayTransactions( userTransactions: dbUserTransaction[], @@ -622,7 +598,7 @@ export class TransactionResolver { transactionSendCoin.userId = senderUser.id transactionSendCoin.senderPublic = senderUser.pubkey transactionSendCoin.recipiantUserId = recipiantUser.id - transactionSendCoin.recipiantPublic = Buffer.from(fromHex(recipiantPublicKey)) + transactionSendCoin.recipiantPublic = Buffer.from(recipiantPublicKey, 'hex') transactionSendCoin.amount = centAmount transactionSendCoin.senderFinalBalance = senderStateBalance.amount await queryRunner.manager.save(transactionSendCoin).catch((error) => { diff --git a/backend/src/util/sendEMail.ts b/backend/src/util/sendEMail.ts new file mode 100644 index 000000000..e34597419 --- /dev/null +++ b/backend/src/util/sendEMail.ts @@ -0,0 +1,26 @@ +import { createTransport } from 'nodemailer' + +import CONFIG from '../config' + +export const sendEMail = async (emailDef: any): Promise => { + if (!CONFIG.EMAIL) { + // eslint-disable-next-line no-console + console.log('Emails are disabled via config') + return false + } + const transporter = createTransport({ + host: CONFIG.EMAIL_SMTP_URL, + port: Number(CONFIG.EMAIL_SMTP_PORT), + secure: false, // true for 465, false for other ports + requireTLS: true, + auth: { + user: CONFIG.EMAIL_USERNAME, + pass: CONFIG.EMAIL_PASSWORD, + }, + }) + const info = await transporter.sendMail(emailDef) + if (!info.messageId) { + throw new Error('error sending notification email, but transaction succeed') + } + return true +}