mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-20 09:22:49 +03:00
d81bc91bd2
refs #7116, refs #2001 - Changes the way Ghost errors are implemented to benefit from proper inheritance - Moves all error definitions into a single file - Changes the error constructor to take an options object, rather than needing the arguments to be passed in the correct order. - Provides a wrapper so that any errors that haven't already been converted to GhostErrors get converted before they are displayed. Summary of changes: * 🐛 set NODE_ENV in config handler * ✨ add GhostError implementation (core/server/errors.js) - register all errors in one file - inheritance from GhostError - option pattern * 🔥 remove all error files * ✨ wrap all errors into GhostError in case of HTTP * 🎨 adaptions - option pattern for errors - use GhostError when needed * 🎨 revert debug deletion and add TODO for error id's
31 lines
1.2 KiB
JavaScript
31 lines
1.2 KiB
JavaScript
var apiUtils = require('../../api/utils'),
|
|
errors = require('../../errors'),
|
|
config = require('../../config'),
|
|
i18n = require('../../i18n');
|
|
|
|
module.exports = function upload(options) {
|
|
var type = options.type;
|
|
|
|
// if we finish the data/importer logic, we forward the request to the specified importer
|
|
return function uploadValidation(req, res, next) {
|
|
var extensions = (config.get('uploads')[type] && config.get('uploads')[type].extensions) || [],
|
|
contentTypes = (config.get('uploads')[type] && config.get('uploads')[type].contentTypes) || [];
|
|
|
|
req.file = req.file || {};
|
|
req.file.name = req.file.originalname;
|
|
req.file.type = req.file.mimetype;
|
|
|
|
// Check if a file was provided
|
|
if (!apiUtils.checkFileExists(req.file)) {
|
|
return next(new errors.NoPermissionError({message: i18n.t('errors.api.' + type + '.missingFile')}));
|
|
}
|
|
|
|
// Check if the file is valid
|
|
if (!apiUtils.checkFileIsValid(req.file, contentTypes, extensions)) {
|
|
return next(new errors.UnsupportedMediaTypeError({message: i18n.t('errors.api.' + type + '.invalidFile', {extensions: extensions})}));
|
|
}
|
|
|
|
next();
|
|
};
|
|
};
|