diff --git a/index.js b/index.js index cfa502d4..f7bc2453 100644 --- a/index.js +++ b/index.js @@ -416,7 +416,7 @@ function cms(loopbackApplication, options) { aws.getS3Credentials(req.query["path"], req.query["fileType"], function(error, credentials) { if (error) { - res.status(500).send(error); + res.status(error.status).send(error.message); } res.send(credentials); }); diff --git a/server/aws.js b/server/aws.js index 1600a5ce..a296ad77 100644 --- a/server/aws.js +++ b/server/aws.js @@ -22,6 +22,7 @@ THE SOFTWARE. */ +var _ = require('lodash'); var uuid = require('node-uuid'); var moment = require("moment"); var crypto = require("crypto"); @@ -38,16 +39,26 @@ var awsConfig; function getS3Credentials(path, fileType, callback) { var acceptableFileTypes = awsConfig.s3.path[path]; if (!acceptableFileTypes) { - callback({error: "Invalid path value"}); + var error = new Error('Invalid path value'); + var error.status = 400; + callback(error); return; } if (fileType == undefined || fileType == null) { - callback({error: "Please provide a fileType"}); + var error = new Error('Please provide a fileType'); + var error.status = 400; + callback(error); return; } var fileExtension = acceptableFileTypes[fileType]; if (!fileExtension) { - callback({error: "Invalid fileType for path"}); + var files = []; + _.forEach(acceptableFileTypes, function(type) { + files.push(type); + }); + var error = new Error('The file being uploaded is not an accepted file type for this form. Allowed file types are (' + files.join(', ') + ').'); + error.status = 400; + callback(error); return; } var expirationLength = 900; //15min