moving mail logic into controller
parent
0ef1b2a940
commit
33b630e893
|
@ -13,12 +13,15 @@ var config = {
|
|||
sslKey: 'certs/retropilot.key',
|
||||
sslCrt: 'certs/retropilot.crt',
|
||||
|
||||
canSendMail: true, // Skips sending mail, all attempted mail is logged under DEBUG
|
||||
smtpHost: "localhost", // credentials for smtp server to send account registration mails. if not filled in, get the generated tokens from the server.log manually
|
||||
smtpPort: 25,
|
||||
smtpUser: "root",
|
||||
smtpPassword: "",
|
||||
smtpFrom: "no-reply@retropilot.org",
|
||||
|
||||
SENDGRID_API_KEY: '',
|
||||
|
||||
baseUrl: 'http://192.168.1.165:3000/', // base url of the retropilot server
|
||||
baseUploadUrl: 'http://192.168.1.165:3000/backend/post_upload', // base url sent to devices for POSTing drives & logs
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@ module.exports = async (models, logger) => {
|
|||
return {
|
||||
authentication: require('./authentication')(models, logger),
|
||||
helpers: require('./helpers')(models, logger),
|
||||
storage: require('./storage')(models, logger)
|
||||
storage: require('./storage')(models, logger),
|
||||
mailing: require('./mailing')(models, logger)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
const config = require('./../config');
|
||||
const nodemailer = require('nodemailer');
|
||||
|
||||
let models;
|
||||
let logger;
|
||||
|
||||
let transporter = nodemailer.createTransport(
|
||||
{
|
||||
host: config.smtpHost,
|
||||
port: config.smtpPort,
|
||||
auth: {
|
||||
user: config.smtpUser,
|
||||
pass: config.smtpPassword
|
||||
},
|
||||
logger: true,
|
||||
debug: false
|
||||
},
|
||||
{from: config.smtpFrom}
|
||||
);
|
||||
|
||||
|
||||
|
||||
async function sendEmailVerification(token, email) {
|
||||
if (!config.canSendMail) return logger.warn(`Mailing disabled. ${email} - ${token}`);
|
||||
console.log("mail")
|
||||
let message = {
|
||||
from: config.smtpFrom,
|
||||
to: email.trim(),
|
||||
subject: 'RetroPilot Registration Token',
|
||||
text: 'Your Email Registration Token Is: "' + token + '"'
|
||||
};
|
||||
|
||||
const {error, info} = await transporter.sendMail(message);
|
||||
|
||||
if (error) {
|
||||
logger.warn(`Email to ${email} FAILED ${error}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
module.exports = (_models, _logger) => {
|
||||
models = _models;
|
||||
logger = _logger;
|
||||
|
||||
return {
|
||||
sendEmailVerification
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
const router = require('express').Router();
|
||||
const bodyParser = require('body-parser');
|
||||
const crypto = require('crypto');
|
||||
const nodemailer = require('nodemailer');
|
||||
const htmlspecialchars = require('htmlspecialchars');
|
||||
const dirTree = require("directory-tree");
|
||||
const cookieParser = require('cookie-parser');
|
||||
|
@ -99,40 +98,14 @@ router.post('/useradmin/register/token', bodyParser.urlencoded({extended: true})
|
|||
return;
|
||||
}
|
||||
|
||||
var token = crypto.createHmac('sha256', config.applicationSalt).update(email.trim()).digest('hex');
|
||||
const token = crypto.createHmac('sha256', config.applicationSalt).update(email.trim()).digest('hex');
|
||||
|
||||
var infoText = '';
|
||||
let infoText = '';
|
||||
|
||||
if (req.body.token === undefined) { // email entered, token request
|
||||
logger.info("USERADMIN REGISTRATION sending token to " + htmlspecialchars(email.trim()) + ": \"" + token + "\"");
|
||||
infoText = 'Please check your inbox (<b>SPAM</b>) for an email with the registration token.<br>If the token was not delivered, please ask the administrator to check the <i>server.log</i> for the token generated for your email.<br><br>';
|
||||
|
||||
let transporter = nodemailer.createTransport(
|
||||
{
|
||||
host: config.smtpHost,
|
||||
port: config.smtpPort,
|
||||
auth: {
|
||||
user: config.smtpUser,
|
||||
pass: config.smtpPassword
|
||||
},
|
||||
logger: true,
|
||||
debug: false
|
||||
},
|
||||
{from: config.smtpFrom}
|
||||
);
|
||||
|
||||
let message = {
|
||||
from: config.smtpFrom,
|
||||
to: email.trim(),
|
||||
subject: 'RetroPilot Registration Token',
|
||||
text: 'Your Email Registration Token Is: "' + token + '"'
|
||||
};
|
||||
|
||||
transporter.sendMail(message, (error, info) => {
|
||||
if (error) {
|
||||
logger.error(error.message);
|
||||
}
|
||||
});
|
||||
const emailStatus = await controllers.mailing.sendEmailVerification(token, email);
|
||||
|
||||
} else { // final registration form filled
|
||||
if (req.body.token != token) {
|
||||
|
|
Loading…
Reference in New Issue