mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-08 15:05:46 +01:00
added daily cleaning of reset tokens #2708
This commit is contained in:
@@ -18,9 +18,7 @@ var async = require('async'),
|
|||||||
(function(Notifications) {
|
(function(Notifications) {
|
||||||
|
|
||||||
Notifications.init = function() {
|
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);
|
new cron('*/30 * * * *', Notifications.prune, null, true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
var winston = require('winston'),
|
var winston = require('winston'),
|
||||||
cronJob = require('cron').CronJob,
|
cronJob = require('cron').CronJob,
|
||||||
|
|
||||||
user = require('../user'),
|
|
||||||
meta = require('../meta');
|
meta = require('../meta');
|
||||||
|
|
||||||
module.exports = function(User) {
|
module.exports = function(User) {
|
||||||
@@ -23,6 +22,8 @@ module.exports = function(User) {
|
|||||||
winston.verbose('[user.startJobs] Digest job (monthly) started.');
|
winston.verbose('[user.startJobs] Digest job (monthly) started.');
|
||||||
User.digest.execute('month');
|
User.digest.execute('month');
|
||||||
}, null, true);
|
}, null, true);
|
||||||
|
|
||||||
|
new cronJob('0 0 0 * * *', User.reset.clean, null, true);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
var async = require('async'),
|
var async = require('async'),
|
||||||
nconf = require('nconf'),
|
nconf = require('nconf'),
|
||||||
|
winston = require('winston'),
|
||||||
|
|
||||||
user = require('../user'),
|
user = require('../user'),
|
||||||
utils = require('../../public/src/utils'),
|
utils = require('../../public/src/utils'),
|
||||||
@@ -13,7 +14,6 @@ var async = require('async'),
|
|||||||
emailer = require('../emailer');
|
emailer = require('../emailer');
|
||||||
|
|
||||||
(function(UserReset) {
|
(function(UserReset) {
|
||||||
|
|
||||||
UserReset.validate = function(code, callback) {
|
UserReset.validate = function(code, callback) {
|
||||||
db.getObjectField('reset:uid', code, function(err, uid) {
|
db.getObjectField('reset:uid', code, function(err, uid) {
|
||||||
if (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));
|
}(exports));
|
||||||
|
|||||||
Reference in New Issue
Block a user