added daily cleaning of reset tokens #2708

v1.18.x
Julian Lam 10 years ago
parent 1843d0364e
commit c351261165

@ -18,9 +18,7 @@ var async = require('async'),
(function(Notifications) {
Notifications.init = function() {
if (process.env.NODE_ENV === 'development') {
winston.verbose('[notifications.init] Registering jobs.');
}
winston.verbose('[notifications.init] Registering jobs.');
new cron('*/30 * * * *', Notifications.prune, null, true);
};

@ -4,7 +4,6 @@
var winston = require('winston'),
cronJob = require('cron').CronJob,
user = require('../user'),
meta = require('../meta');
module.exports = function(User) {
@ -23,6 +22,8 @@ module.exports = function(User) {
winston.verbose('[user.startJobs] Digest job (monthly) started.');
User.digest.execute('month');
}, null, true);
new cronJob('0 0 0 * * *', User.reset.clean, null, true);
};
};

@ -2,6 +2,7 @@
var async = require('async'),
nconf = require('nconf'),
winston = require('winston'),
user = require('../user'),
utils = require('../../public/src/utils'),
@ -13,7 +14,6 @@ var async = require('async'),
emailer = require('../emailer');
(function(UserReset) {
UserReset.validate = function(code, callback) {
db.getObjectField('reset:uid', code, function(err, uid) {
if (err || !uid) {
@ -86,4 +86,20 @@ var async = require('async'),
});
};
UserReset.clean = function(callback) {
// Locate all codes that have expired, and remove them from the set/hash
async.waterfall([
async.apply(db.getSortedSetRangeByScore, 'reset:issueDate', 0, -1, -1, +new Date()-(1000*60*120)),
function(tokens, next) {
if (!tokens.length) { return next(); }
winston.verbose('[UserReset.clean] Removing ' + tokens.length + ' reset tokens from database');
async.parallel([
async.apply(db.deleteObjectField, 'reset:uid', tokens),
async.apply(db.sortedSetRemove, 'reset:issueDate', tokens)
], next);
}
], callback);
};
}(exports));

Loading…
Cancel
Save