wait for user object to be saved before returning from User.create

v1.18.x
Baris Soner Usakli 11 years ago
parent 93130b27d5
commit 3be0ad5bce

@ -108,39 +108,43 @@ var bcrypt = require('bcryptjs'),
'showemail': 0 'showemail': 0
}; };
db.setObject('user:' + uid, userData); db.setObject('user:' + uid, userData, function(err) {
db.setObjectField('username:uid', userData.username, uid); if(err) {
db.setObjectField('userslug:uid', userData.userslug, uid); return callback(err);
}
db.setObjectField('username:uid', userData.username, uid);
db.setObjectField('userslug:uid', userData.userslug, uid);
if (userData.email !== undefined) { if (userData.email !== undefined) {
db.setObjectField('email:uid', userData.email, uid); db.setObjectField('email:uid', userData.email, uid);
if (parseInt(uid, 10) !== 1) { if (parseInt(uid, 10) !== 1) {
User.email.verify(uid, userData.email); User.email.verify(uid, userData.email);
}
} }
}
plugins.fireHook('action:user.create', userData); plugins.fireHook('action:user.create', userData);
db.incrObjectField('global', 'userCount'); db.incrObjectField('global', 'userCount');
db.sortedSetAdd('users:joindate', timestamp, uid); db.sortedSetAdd('users:joindate', timestamp, uid);
db.sortedSetAdd('users:postcount', 0, uid); db.sortedSetAdd('users:postcount', 0, uid);
db.sortedSetAdd('users:reputation', 0, uid); db.sortedSetAdd('users:reputation', 0, uid);
groups.joinByGroupName('registered-users', uid); groups.joinByGroupName('registered-users', uid);
if (password) { if (password) {
User.hashPassword(password, function(err, hash) { User.hashPassword(password, function(err, hash) {
if(err) { if(err) {
return callback(err); return callback(err);
} }
User.setUserField(uid, 'password', hash); User.setUserField(uid, 'password', hash);
callback(null, uid);
});
} else {
callback(null, uid); callback(null, uid);
}); }
} else { });
callback(null, uid);
}
}); });
}); });
}; };

Loading…
Cancel
Save