update profile

v1.18.x
barisusakli 9 years ago
parent 4a06750ae2
commit 853aeb1b8c

@ -1,5 +1,7 @@
'use strict';
var async = require('async');
var user = require('../../user');
var meta = require('../../meta');
var events = require('../../events');
@ -31,44 +33,6 @@ module.exports = function(SocketUser) {
SocketUser.updateProfile = function(socket, data, callback) {
function update(oldUserData) {
function done(err, userData) {
if (err) {
return callback(err);
}
if (userData.email !== oldUserData.email) {
events.log({
type: 'email-change',
uid: socket.uid,
targetUid: data.uid,
ip: socket.ip,
oldEmail: oldUserData.email,
newEmail: userData.email
});
}
if (userData.username !== oldUserData.username) {
events.log({
type: 'username-change',
uid: socket.uid,
targetUid: data.uid,
ip: socket.ip,
oldUsername: oldUserData.username,
newUsername: userData.username
});
}
callback(null, userData);
}
SocketUser.isAdminOrSelf(socket, data.uid, function(err) {
if (err) {
return callback(err);
}
user.updateProfile(data.uid, data, done);
});
}
if (!socket.uid) {
return callback('[[error:invalid-uid]]');
}
@ -77,17 +41,46 @@ module.exports = function(SocketUser) {
return callback(new Error('[[error:invalid-data]]'));
}
user.getUserFields(data.uid, ['email', 'username'], function(err, oldUserData) {
if (err) {
return callback(err);
}
var oldUserData;
async.waterfall([
function (next) {
user.getUserFields(data.uid, ['email', 'username'], next);
},
function (_oldUserData, next) {
oldUserData = _oldUserData;
if (!oldUserData || !oldUserData.username) {
return next(new Error('[[error-invalid-data]]'));
}
if (parseInt(meta.config['username:disableEdit'], 10) === 1) {
data.username = oldUserData.username;
}
if (parseInt(meta.config['username:disableEdit'], 10) === 1) {
data.username = oldUserData.username;
}
SocketUser.isAdminOrSelf(socket, data.uid, next);
},
function (next) {
user.updateProfile(data.uid, data, next);
},
function (userData, next) {
function log(type, eventData) {
eventData.type = type;
eventData.uid = socket.uid;
eventData.targetUid = data.uid;
eventData.ip = socket.ip;
events.log(eventData);
}
update(oldUserData, callback);
});
if (userData.email !== oldUserData.email) {
log('email-change', {oldEmail: oldUserData.email, newEmail: userData.email});
}
if (userData.username !== oldUserData.username) {
log('username-change', {oldUsername: oldUserData.username, newUsername: userData.username});
}
next(null, userData);
}
], callback);
};

Loading…
Cancel
Save