mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-07-07 06:23:18 +02:00
reset-password enhancements and bug fix
This commit is contained in:
@@ -1,50 +1,90 @@
|
||||
var nodemailer = require('nodemailer'),
|
||||
mongoose = require('mongoose'),
|
||||
config = require('../config/config'),
|
||||
mg = require('../config/lib/mongoose');
|
||||
mongoose = require('mongoose'),
|
||||
chalk = require('chalk'),
|
||||
config = require('../config/config'),
|
||||
mg = require('../config/lib/mongoose');
|
||||
|
||||
var transporter = nodemailer.createTransport(config.mailer.options);
|
||||
var link = 'reset link here'; // PUT reset link here
|
||||
var email = {
|
||||
from: config.mailer.from,
|
||||
subject: 'Security update'
|
||||
};
|
||||
var text = [
|
||||
'Dear {{name}},',
|
||||
'\n',
|
||||
'We have updated our password storage systems to be more secure and more efficient, please click the link below to reset your password so you can login in the future.',
|
||||
link,
|
||||
'\n',
|
||||
'Thanks,',
|
||||
'The Team'
|
||||
].join('\n');
|
||||
|
||||
mg.connect(function(db) {
|
||||
var User = mongoose.model('User');
|
||||
mg.loadModels();
|
||||
|
||||
User.find().exec(function(err, users) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
mg.connect(function (db) {
|
||||
var User = mongoose.model('User');
|
||||
|
||||
var email = {
|
||||
from: 'noreply@xyz.com',
|
||||
subject: 'Security update'
|
||||
};
|
||||
User.find().exec(function (err, users) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
for (var i = 0; i < users.length; i++) {
|
||||
var text = [
|
||||
'Dear ' + users[i].displayName,
|
||||
'\n',
|
||||
'We have updated our password storage systems to be more secure and more efficient, please click the link below to reset your password so you can login in the future.',
|
||||
link,
|
||||
'\n',
|
||||
'Thanks,',
|
||||
'The Team'
|
||||
].join('\n');
|
||||
var processedCount = 0,
|
||||
errorCount = 0;
|
||||
|
||||
email.to = users[i].email;
|
||||
email.text = text;
|
||||
email.html = text;
|
||||
// report and exit if no users were found
|
||||
if (users.length === 0) {
|
||||
return reportAndExit(processedCount, errorCount);
|
||||
}
|
||||
|
||||
transporter.sendMail(email, function(err, info) {
|
||||
if (err) {
|
||||
console.log('Error: ', err);
|
||||
console.log('Could not send email for ', users[i].displayName);
|
||||
} else {
|
||||
console.log('Sent reset password email for ', users[i].displayName);
|
||||
}
|
||||
});
|
||||
}
|
||||
for (var i = 0; i < users.length; i++) {
|
||||
sendEmail(users[i]);
|
||||
}
|
||||
|
||||
console.log('Sent all emails');
|
||||
process.exit(0);
|
||||
});
|
||||
function sendEmail(user) {
|
||||
email.to = user.email;
|
||||
email.text = email.html = text.replace('{{name}}', user.displayName);
|
||||
|
||||
transporter.sendMail(email, emailCallback(user));
|
||||
};
|
||||
|
||||
function emailCallback(user) {
|
||||
return function (err, info) {
|
||||
processedCount++;
|
||||
|
||||
if (err) {
|
||||
errorCount++;
|
||||
|
||||
if (config.mailer.options.debug) {
|
||||
console.log('Error: ', err);
|
||||
}
|
||||
console.error('[' + processedCount + '/' + users.length + '] ' + chalk.red('Could not send email for ' + user.displayName));
|
||||
} else {
|
||||
console.log('[' + processedCount + '/' + users.length + '] Sent reset password email for ' + user.displayName);
|
||||
}
|
||||
|
||||
if (processedCount === users.length) {
|
||||
return reportAndExit(processedCount, errorCount);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// report the processing results and exit
|
||||
function reportAndExit(processedCount, errorCount) {
|
||||
var successCount = processedCount - errorCount;
|
||||
|
||||
console.log();
|
||||
|
||||
if (processedCount === 0) {
|
||||
console.log(chalk.yellow('No users were found.'));
|
||||
} else {
|
||||
var alert = (!errorCount) ? chalk.green : ((successCount / processedCount) < .8) ? chalk.red : chalk.yellow;
|
||||
|
||||
console.log(alert('Sent ' + successCount + ' of ' + processedCount + ' emails successfully.'));
|
||||
}
|
||||
|
||||
process.exit(0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user