mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-03 04:25:55 +01:00
possible fix for #1741
This commit is contained in:
@@ -27,34 +27,38 @@ module.exports = function(User) {
|
||||
var password = userData.password;
|
||||
userData.password = null;
|
||||
|
||||
async.parallel([
|
||||
function(next) {
|
||||
async.parallel({
|
||||
emailValid: function(next) {
|
||||
if (userData.email) {
|
||||
next(!utils.isEmailValid(userData.email) ? new Error('[[error:invalid-email]]') : null);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
function(next) {
|
||||
userNameValid: function(next) {
|
||||
next((!utils.isUserNameValid(userData.username) || !userData.userslug) ? new Error('[[error:invalid-username]]') : null);
|
||||
},
|
||||
function(next) {
|
||||
passwordValid: function(next) {
|
||||
if (password) {
|
||||
next(!utils.isPasswordValid(password) ? new Error('[[error:invalid-password]]') : null);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
function(next) {
|
||||
renamedUsername: function(next) {
|
||||
meta.userOrGroupExists(userData.userslug, function(err, exists) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (exists) {
|
||||
var newUsername = '';
|
||||
async.forever(function(next) {
|
||||
var newUsername = userData.username + (Math.floor(Math.random() * 255) + 1);
|
||||
newUsername = userData.username + (Math.floor(Math.random() * 255) + 1);
|
||||
User.exists(newUsername, function(err, exists) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (!exists) {
|
||||
next(newUsername);
|
||||
} else {
|
||||
@@ -69,7 +73,7 @@ module.exports = function(User) {
|
||||
}
|
||||
});
|
||||
},
|
||||
function(next) {
|
||||
emailAvailable: function(next) {
|
||||
if (userData.email) {
|
||||
User.email.available(userData.email, function(err, available) {
|
||||
if (err) {
|
||||
@@ -81,28 +85,34 @@ module.exports = function(User) {
|
||||
next();
|
||||
}
|
||||
},
|
||||
function(next) {
|
||||
customFields: function(next) {
|
||||
plugins.fireHook('filter:user.custom_fields', userData, function(err, fields) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
delete fields.username;
|
||||
delete fields.userslug;
|
||||
customFields = fields;
|
||||
next(err);
|
||||
});
|
||||
},
|
||||
function(next) {
|
||||
userData: function(next) {
|
||||
plugins.fireHook('filter:user.create', userData, function(err, filteredUserData){
|
||||
next(err, utils.merge(userData, filteredUserData));
|
||||
});
|
||||
}
|
||||
], function(err, results) {
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
userData = results[results.length - 1];
|
||||
var userNameChanged = !!results[3];
|
||||
userData = results.userData;
|
||||
var userNameChanged = !!results.renamedUsername;
|
||||
|
||||
// If a new username was picked...
|
||||
if (userNameChanged) {
|
||||
userData.username = results[3];
|
||||
userData.userslug = utils.slugify(results[3]);
|
||||
userData.username = results.renamedUsername;
|
||||
userData.userslug = utils.slugify(results.renamedUsername);
|
||||
}
|
||||
|
||||
db.incrObjectField('global', 'nextUid', function(err, uid) {
|
||||
|
||||
Reference in New Issue
Block a user