mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-06 15:42:52 +01:00
fixes #6702
This commit is contained in:
62
src/upgrades/1.10.2/username_email_history.js
Normal file
62
src/upgrades/1.10.2/username_email_history.js
Normal file
@@ -0,0 +1,62 @@
|
||||
'use strict';
|
||||
|
||||
var db = require('../../database');
|
||||
|
||||
var async = require('async');
|
||||
var batch = require('../../batch');
|
||||
var user = require('../../user');
|
||||
|
||||
module.exports = {
|
||||
name: 'Record first entry in username/email history',
|
||||
timestamp: Date.UTC(2018, 7, 28),
|
||||
method: function (callback) {
|
||||
batch.processSortedSet('users:joindate', function (ids, next) {
|
||||
async.each(ids, function (uid, next) {
|
||||
async.parallel([
|
||||
function (next) {
|
||||
// Username
|
||||
async.waterfall([
|
||||
async.apply(db.sortedSetCard, 'user:' + uid + ':usernames'),
|
||||
(count, next) => {
|
||||
if (count > 0) {
|
||||
// User has changed their username before, no record of original username, skip.
|
||||
return setImmediate(next, null, null);
|
||||
}
|
||||
|
||||
user.getUserFields(uid, ['username', 'joindate'], next);
|
||||
},
|
||||
(userdata, next) => {
|
||||
if (!userdata) {
|
||||
return setImmediate(next);
|
||||
}
|
||||
|
||||
db.sortedSetAdd('user:' + uid + ':usernames', userdata.joindate, [userdata.username, userdata.joindate].join(':'), next);
|
||||
},
|
||||
], next);
|
||||
},
|
||||
function (next) {
|
||||
// Email
|
||||
async.waterfall([
|
||||
async.apply(db.sortedSetCard, 'user:' + uid + ':emails'),
|
||||
(count, next) => {
|
||||
if (count > 0) {
|
||||
// User has changed their email before, no record of original email, skip.
|
||||
return setImmediate(next, null, null);
|
||||
}
|
||||
|
||||
user.getUserFields(uid, ['email', 'joindate'], next);
|
||||
},
|
||||
(userdata, next) => {
|
||||
if (!userdata) {
|
||||
return setImmediate(next);
|
||||
}
|
||||
|
||||
db.sortedSetAdd('user:' + uid + ':emails', userdata.joindate, [userdata.email, userdata.joindate].join(':'), next);
|
||||
},
|
||||
], next);
|
||||
},
|
||||
], next);
|
||||
}, next);
|
||||
}, callback);
|
||||
},
|
||||
};
|
||||
@@ -93,6 +93,9 @@ module.exports = function (User) {
|
||||
function (next) {
|
||||
db.sortedSetsAdd(['users:postcount', 'users:reputation'], 0, userData.uid, next);
|
||||
},
|
||||
function (next) {
|
||||
db.sortedSetAdd('user:' + userData.uid + ':usernames', timestamp, userData.username, next);
|
||||
},
|
||||
function (next) {
|
||||
groups.join('registered-users', userData.uid, next);
|
||||
},
|
||||
@@ -104,6 +107,7 @@ module.exports = function (User) {
|
||||
async.parallel([
|
||||
async.apply(db.sortedSetAdd, 'email:uid', userData.uid, userData.email.toLowerCase()),
|
||||
async.apply(db.sortedSetAdd, 'email:sorted', 0, userData.email.toLowerCase() + ':' + userData.uid),
|
||||
async.apply(db.sortedSetAdd, 'user:' + userData.uid + ':emails', timestamp, userData.email),
|
||||
], next);
|
||||
|
||||
if (parseInt(userData.uid, 10) !== 1 && parseInt(meta.config.requireEmailConfirmation, 10) === 1) {
|
||||
|
||||
Reference in New Issue
Block a user