mirror of https://gitgud.io/fatchan/jschan.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
'use strict';
|
|
|
|
const uploadBanners = require(__dirname+'/../../models/forms/uploadbanners.js')
|
|
, deleteTempFiles = require(__dirname+'/../../helpers/files/deletetempfiles.js')
|
|
, { globalLimits } = require(__dirname+'/../../configs/main.json');
|
|
|
|
module.exports = async (req, res, next) => {
|
|
|
|
if (req.files && req.files.file) {
|
|
if (Array.isArray(req.files.file)) {
|
|
res.locals.numFiles = req.files.file.filter(file => file.size > 0).length;
|
|
} else {
|
|
res.locals.numFiles = req.files.file.size > 0 ? 1 : 0;
|
|
req.files.file = [req.files.file];
|
|
}
|
|
}
|
|
|
|
const errors = [];
|
|
|
|
if (res.locals.numFiles === 0) {
|
|
errors.push('Must provide a file');
|
|
} else if (res.locals.numFiles > globalLimits.bannerFiles.max) {
|
|
errors.push(`Exceeded max banner uploads in one request of ${globalLimits.bannerFiles.max}`)
|
|
} else if (res.locals.board.banners.length+res.locals.numFiles > 100) {
|
|
errors.push('Number of uploads would exceed 100 banner limit');
|
|
}
|
|
|
|
if (errors.length > 0) {
|
|
await deleteTempFiles(req).catch(e => console.error);
|
|
return res.status(400).render('message', {
|
|
'title': 'Bad request',
|
|
'errors': errors,
|
|
'redirect': `/${req.params.board}/manage/banners.html`
|
|
})
|
|
}
|
|
|
|
try {
|
|
await uploadBanners(req, res, next);
|
|
} catch (err) {
|
|
await deleteTempFiles(req).catch(e => console.error);
|
|
return next(err);
|
|
}
|
|
|
|
}
|
|
|