v1.18.x
Baris Usakli 12 years ago
parent 1d39b08195
commit 8f2a0014b3

@ -149,7 +149,7 @@
height: 50px;
line-height: 16px;
margin-left: 1px;
padding: 5px;
padding: 5px 5px 5px 0px;
li {
line-height: 16px;
@ -159,20 +159,15 @@
}
p {
display: block;
float: left;
width: 70%;
margin-left: 10px;
padding-left:5px;
overflow: hidden;
height: 32px;
}
span {
display: block;
float: left;
width: 70%;
margin-left: 10px;
overflow: hidden;
height: 16px;
margin-top: -10px;
padding-left:5px;
color: #666;
}
}

@ -106,33 +106,10 @@ $(document).ready(function() {
website:$('#inputWebsite').val(),
birthday:$('#inputBirthday').val(),
location:$('#inputLocation').val(),
signature:$('#inputSignature').val(),
_csrf:$('#csrf_token').val()
signature:$('#inputSignature').val()
};
$.post('/users/doedit',
userData,
function(data) {
if(data.error) {
app.alert({
'alert_id': 'user_profile_updated',
type: 'error',
title: 'Profile Update Error',
message: data.error,
timeout: 2000
});
return;
}
app.alert({
'alert_id': 'user_profile_updated',
type: 'success',
title: 'Profile Updated',
message: 'Your profile has been updated successfully',
timeout: 2000
});
}
);
socket.emit('api:user.updateProfile', userData);
return false;
});

@ -73,19 +73,6 @@ var user = require('./../user.js'),
});
});
app.post('/users/doedit', function(req, res){
if(!req.user)
return res.redirect('/403');
if(req.user.uid != req.body.uid) {
return res.redirect('/');
}
user.updateProfile(req.user.uid, req.body, function(data) {
res.send(data);
});
});
app.post('/users/uploadpicture', function(req, res) {
if(!req.user)
return res.redirect('/403');

@ -28,57 +28,64 @@ var utils = require('./../public/src/utils.js'),
callback(null, 0);
return;
}
RDB.incr('global:next_user_id', function(err, uid) {
RDB.handle(err);
var gravatar = User.createGravatarURLFromEmail(email);
RDB.hmset('user:'+uid, {
'uid': uid,
'username' : username,
'userslug' : userslug,
'fullname': '',
'location':'',
'birthday':'',
'website':'',
'email' : email,
'signature':'',
'joindate' : Date.now(),
'picture': gravatar,
'gravatarpicture' : gravatar,
'uploadedpicture': '',
'reputation': 0,
'postcount': 0,
'lastposttime': 0,
'administrator': (uid == 1) ? 1 : 0
});
RDB.set('username:' + username + ':uid', uid);
RDB.set('email:' + email +':uid', uid);
RDB.set('userslug:'+ userslug +':uid', uid);
if(email) {
User.sendConfirmationEmail(email);
User.isEmailAvailable(email, function(available) {
if(!available) {
callback(null, 0);
return;
}
RDB.incr('usercount', function(err, count) {
RDB.incr('global:next_user_id', function(err, uid) {
RDB.handle(err);
io.sockets.emit('user.count', {count: count});
});
var gravatar = User.createGravatarURLFromEmail(email);
RDB.hmset('user:'+uid, {
'uid': uid,
'username' : username,
'userslug' : userslug,
'fullname': '',
'location':'',
'birthday':'',
'website':'',
'email' : email,
'signature':'',
'joindate' : Date.now(),
'picture': gravatar,
'gravatarpicture' : gravatar,
'uploadedpicture': '',
'reputation': 0,
'postcount': 0,
'lastposttime': 0,
'administrator': (uid == 1) ? 1 : 0
});
RDB.set('username:' + username + ':uid', uid);
RDB.set('email:' + email +':uid', uid);
RDB.set('userslug:'+ userslug +':uid', uid);
RDB.lpush('userlist', uid);
io.sockets.emit('user.latest', {userslug: userslug, username: username});
if(email) {
User.sendConfirmationEmail(email);
}
if (password) {
User.hashPassword(password, function(hash) {
User.setUserField(uid, 'password', hash);
RDB.incr('usercount', function(err, count) {
RDB.handle(err);
io.sockets.emit('user.count', {count: count});
});
}
callback(null, uid);
RDB.lpush('userlist', uid);
io.sockets.emit('user.latest', {userslug: userslug, username: username});
if (password) {
User.hashPassword(password, function(hash) {
User.setUserField(uid, 'password', hash);
});
}
callback(null, uid);
});
});
});
};
@ -174,31 +181,84 @@ var utils = require('./../public/src/utils.js'),
});
}
User.updateProfile = function(uid, data, callback) {
User.updateProfile = function(socket, uid, data) {
var fields = ['email', 'fullname', 'website', 'location', 'birthday', 'signature'];
if(data['signature'] !== undefined && data['signature'].length > 150) {
callback({error:'Signature can\'t be longer than 150 characters!'});
return;
function isSignatureValid(next) {
if(data['signature'] !== undefined && data['signature'].length > 150) {
next({error:'Signature can\'t be longer than 150 characters!'}, false);
} else {
next(null, true);
}
}
function isEmailAvailable(next) {
if(data['email'] !== undefined) {
User.getUserField(uid, 'email', function(email) {
if(email !== data['email']) {
User.isEmailAvailable(data['email'], function(available) {
if(!available) {
next({error:'Email not available!'}, false);
}
});
} else {
next(null, true);
}
});
} else {
next(null, true);
}
}
async.series([isSignatureValid, isEmailAvailable], function(err, results) {
if(err) {
socket.emit('event:alert', {
title: 'Error',
message: err.error,
type: 'error',
timeout: 2000
});
} else {
updateFields();
}
});
for(var i = 0, key, ii = fields.length; i < ii; ++i) {
key = fields[i];
function updateFields() {
for(var i = 0, key, ii = fields.length; i < ii; ++i) {
key = fields[i];
if(data[key] !== undefined) {
if(key === 'email') {
User.setUserField(uid, 'gravatarpicture', User.createGravatarURLFromEmail(data[key]));
RDB.set('email:' + data['email'] +':uid', uid);
} else if(key === 'signature') {
data[key] = utils.strip_tags(data[key]);
}
if(data[key] !== undefined) {
if(key === 'email') {
User.setUserField(uid, 'gravatarpicture', User.createGravatarURLFromEmail(data[key]));
RDB.set('email:' + data['email'] +':uid', uid);
} else if(key === 'signature') {
data[key] = utils.strip_tags(data[key]);
}
User.setUserField(uid, key, data[key]);
User.setUserField(uid, key, data[key]);
}
}
socket.emit('event:alert', {
title: 'Success',
message: 'Your profile has been updated successfully!',
type: 'success',
timeout: 2000
});
}
}
callback({});
User.isEmailAvailable = function(email, callback) {
RDB.exists('email:' + email + ':uid' , function(err, exists) {
if(!err) {
callback(exists !== 1);
return;
} else {
console.log(err);
callback(false);
}
});
}
User.changePassword = function(socket, uid, data, callback) {

@ -197,6 +197,10 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
}
});
});
socket.on('api:user.updateProfile', function(data) {
user.updateProfile(socket, uid, data);
});
socket.on('api:topics.post', function(data) {
topics.post(socket, uid, data.title, data.content, data.category_id);

Loading…
Cancel
Save