From c50d65592271b315726dc38adf77e0a82aac4622 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 8 Mar 2016 19:01:45 +0200 Subject: [PATCH] closes #4325 --- src/controllers/uploads.js | 11 ++++-- src/file.js | 2 +- src/groups/cover.js | 7 +--- src/user/picture.js | 69 +++++++++++++++++++------------------- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js index 17db1741a1..8dff27b47c 100644 --- a/src/controllers/uploads.js +++ b/src/controllers/uploads.js @@ -60,7 +60,7 @@ uploadsController.uploadThumb = function(req, res, next) { } uploadsController.upload(req, res, function(uploadedFile, next) { - file.isFileTypeAllowed(uploadedFile.path, function(err, tempPath) { + file.isFileTypeAllowed(uploadedFile.path, function(err) { if (err) { return next(err); } @@ -94,7 +94,12 @@ uploadsController.uploadGroupCover = function(uid, uploadedFile, callback) { return plugins.fireHook('filter:uploadFile', {file: uploadedFile, uid: uid}, callback); } - saveFileToLocal(uploadedFile, callback); + file.isFileTypeAllowed(uploadedFile.path, function(err) { + if (err) { + return callback(err); + } + saveFileToLocal(uploadedFile, callback); + }); }; function uploadImage(uid, image, callback) { @@ -102,7 +107,7 @@ function uploadImage(uid, image, callback) { return plugins.fireHook('filter:uploadImage', {image: image, uid: uid}, callback); } - file.isFileTypeAllowed(image.path, function(err, tempPath) { + file.isFileTypeAllowed(image.path, function(err) { if (err) { return callback(err); } diff --git a/src/file.js b/src/file.js index 7fe5aa8f06..1c1cab7781 100644 --- a/src/file.js +++ b/src/file.js @@ -52,7 +52,7 @@ file.base64ToLocal = function(imageData, uploadPath, callback) { file.isFileTypeAllowed = function(path, callback) { // Attempt to read the file, if it passes, file type is allowed jimp.read(path, function(err) { - callback(err, path); + callback(err); }); }; diff --git a/src/groups/cover.js b/src/groups/cover.js index 492138e75a..89ef97df94 100644 --- a/src/groups/cover.js +++ b/src/groups/cover.js @@ -7,7 +7,6 @@ var fs = require('fs'); var crypto = require('crypto'); var Jimp = require('jimp'); - var db = require('../database'); var file = require('../file'); var uploadsController = require('../controllers/uploads'); @@ -39,11 +38,7 @@ module.exports = function(Groups) { writeImageDataToFile(data.imageData, next); }, function (_tempPath, next) { - tempPath = _tempPath; // set in local var so it can be deleted if file type invalid - next(null, tempPath); - }, - async.apply(file.isFileTypeAllowed), - function (_tempPath, next) { + tempPath = _tempPath; uploadsController.uploadGroupCover(uid, { name: 'groupCover', path: tempPath diff --git a/src/user/picture.js b/src/user/picture.js index db0ea234f1..c9a760f10e 100644 --- a/src/user/picture.js +++ b/src/user/picture.js @@ -37,39 +37,39 @@ module.exports = function(User) { function(next) { next(!extension ? new Error('[[error:invalid-image-extension]]') : null); }, - function(next) { - file.isFileTypeAllowed(picture.path, next); - }, - function(path, next) { - image.resizeImage({ - path: picture.path, - extension: extension, - width: imageDimension, - height: imageDimension - }, next); - }, - function(next) { - if (convertToPNG) { - image.normalise(picture.path, extension, next); - } else { - next(); - } - }, function(next) { if (plugins.hasListeners('filter:uploadImage')) { return plugins.fireHook('filter:uploadImage', {image: picture, uid: updateUid}, next); } var filename = updateUid + '-profileimg' + (convertToPNG ? '.png' : extension); - + async.waterfall([ + function(next) { + file.isFileTypeAllowed(picture.path, next); + }, + function(next) { + image.resizeImage({ + path: picture.path, + extension: extension, + width: imageDimension, + height: imageDimension + }, next); + }, + function(next) { + if (convertToPNG) { + image.normalise(picture.path, extension, next); + } else { + next(); + } + }, function(next) { User.getUserField(updateUid, 'uploadedpicture', next); }, function(oldpicture, next) { if (!oldpicture) { return file.saveFileToLocal(filename, 'profile', picture.path, next); - } + } var oldpicturePath = path.join(nconf.get('base_dir'), nconf.get('upload_path'), 'profile', path.basename(oldpicture)); fs.unlink(oldpicturePath, function (err) { @@ -79,7 +79,7 @@ module.exports = function(User) { file.saveFileToLocal(filename, 'profile', picture.path, next); }); - }, + }, ], next); }, function(_image, next) { @@ -167,12 +167,9 @@ module.exports = function(User) { }, next); }, function(next) { - file.isFileTypeAllowed(data.file.path, next); - }, - function(tempPath, next) { var image = { name: 'profileCover', - path: tempPath, + path: data.file.path, uid: data.uid }; @@ -181,16 +178,20 @@ module.exports = function(User) { } var filename = data.uid + '-profilecover'; - file.saveFileToLocal(filename, 'profile', image.path, function(err, upload) { - if (err) { - return next(err); + async.waterfall([ + function (next) { + file.isFileTypeAllowed(data.file.path, next); + }, + function (next) { + file.saveFileToLocal(filename, 'profile', image.path, next); + }, + function (upload, next) { + next(null, { + url: nconf.get('relative_path') + upload.url, + name: image.name + }); } - - next(null, { - url: nconf.get('relative_path') + upload.url, - name: image.name - }); - }); + ], next); }, function(uploadData, next) { url = uploadData.url;