diff --git a/src/routes/user.js b/src/routes/user.js index 0be3abcf12..9c332e59a5 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -126,7 +126,22 @@ var user = require('./../user.js'), return; } - uploadUserPicture(req.user.uid, path.extname(req.files.userPhoto.name), req.files.userPhoto.path, res); + user.getUserField(req.user.uid, 'uploadedpicture', function(oldpicture) { + if(!oldpicture) { + uploadUserPicture(req.user.uid, path.extname(req.files.userPhoto.name), req.files.userPhoto.path, res); + return; + } + + var absolutePath = path.join(global.configuration['ROOT_DIRECTORY'], global.nconf.get('upload_path'), path.basename(oldpicture)); + + fs.unlink(absolutePath, function(err) { + if(err) { + console.error('[%d] %s', Date.now(), + err); + } + + uploadUserPicture(req.user.uid, path.extname(req.files.userPhoto.name), req.files.userPhoto.path, res); + }); + }); }); function uploadUserPicture(uid, extension, tempPath, res) { @@ -151,18 +166,15 @@ var user = require('./../user.js'), var imageUrl = global.nconf.get('upload_url') + filename; - res.json({ path: imageUrl }); - user.setUserField(uid, 'uploadedpicture', imageUrl); user.setUserField(uid, 'picture', imageUrl); - var im = require('node-imagemagick'); - - im.resize({ + require('node-imagemagick').crop({ srcPath: uploadPath, - dstPath: uploadPath, - width: 128 - }, function(err, stdout, stderr) { + dstPath: uploadPath, + width: 128, + height: 128 + }, function(err, stdout, stderr){ if (err) { // @todo: better logging method; for now, send to stderr. // ideally, this should be happening in another process @@ -170,6 +182,8 @@ var user = require('./../user.js'), // to crash the main process console.error('[%d] %s', Date.now(), + err); } + + res.json({ path: imageUrl }); }); }); @@ -217,6 +231,7 @@ var user = require('./../user.js'), function api_method(req, res) { var callerUID = req.user ? req.user.uid : 0; + var userslug = req.params.userslug; var section = req.params.section ? String(req.params.section).toLowerCase() : null; @@ -297,7 +312,7 @@ var user = require('./../user.js'), res.json(404, { error: 'User not found!' }) ; return; } - uid = parseInt(uid, 10); + if(uid !== callerUid || callerUid === "0") { res.json(403, { error: 'Not allowed!' }); return; @@ -360,9 +375,7 @@ var user = require('./../user.js'), callback(null); return; } - - uid = parseInt(uid, 10); - + user.getUserData(uid, function(data) { if(data) { data.joindate = utils.relativeTime(data.joindate);