Skip to content
Snippets Groups Projects
Commit aece47a3 authored by Alexandru Munteanu's avatar Alexandru Munteanu
Browse files

Merge branch 'faraday-master' of gitlab.coko.foundation:xpub/xpub into faraday-master

parents a9ea10e8 94ee872f
No related branches found
No related tags found
No related merge requests found
const Joi = require('joi')
module.exports = {
manuscripts: Joi.any()
.valid([
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/pdf',
'application/msword',
])
.error(new Error('Only Word documents and PDFs are allowed')),
supplementary: Joi.any(),
coverLetter: Joi.any()
.valid([
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/pdf',
'application/msword',
])
.error(new Error('Only Word documents and PDFs are allowed')),
}
const multer = require('multer') const multer = require('multer')
const multerS3 = require('multer-s3') const multerS3 = require('multer-s3')
const uuid = require('uuid') const uuid = require('uuid')
const Joi = require('joi')
const _ = require('lodash')
const config = require('config')
const s3Config = _.get(config, 'pubsweet-component-aws-s3')
const uploadValidations = require(s3Config.validations)
const setupMulter = s3 => { const setupMulter = s3 => {
const upload = multer({ const upload = multer({
...@@ -22,21 +28,16 @@ const setupMulter = s3 => { ...@@ -22,21 +28,16 @@ const setupMulter = s3 => {
} }
const validateFile = (req, file, cb) => { const validateFile = (req, file, cb) => {
if ( const fileType = req.body.fileType
req.body.fileType === 'manuscripts' || const mimetype = file.mimetype
req.body.fileType === 'coverLetter'
) { const valid = Joi.validate({ [fileType]: mimetype }, uploadValidations)
if (
file.mimetype === 'application/pdf' || if (valid.error) {
file.mimetype === 'application/msword' || req.fileValidationError = valid.error.message
file.mimetype ===
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
) {
return cb(null, true)
}
req.fileValidationError = 'Only Word documents and PDFs are allowed'
return cb(null, false) return cb(null, false)
} }
return cb(null, true) return cb(null, true)
} }
......
...@@ -31,7 +31,8 @@ export const editModeEnabled = value => { ...@@ -31,7 +31,8 @@ export const editModeEnabled = value => {
} }
export const requiredFiles = (valus, formValues) => { export const requiredFiles = (valus, formValues) => {
if (get(formValues, 'files.manuscripts').length === 0) { const manuscripts = get(formValues, 'files.manuscripts')
if (manuscripts && manuscripts.length === 0) {
return 'At least one main manuscript file is needed.' return 'At least one main manuscript file is needed.'
} }
return undefined return undefined
......
...@@ -46,5 +46,17 @@ module.exports = { ...@@ -46,5 +46,17 @@ module.exports = {
'editoria-typescript': '2', 'editoria-typescript': '2',
}, },
}, },
publicKeys: ['pubsweet-client', 'authsome', 'validations'], 'pubsweet-component-aws-s3': {
secretAccessKey: process.env.AWS_SECRET_KEY,
accessKeyId: process.env.AWS_ACCESS_KEY,
region: process.env.AWS_REGION,
sender: process.env.PUBSWEET_EMAIL_SENDER || 'dev@mailinator.com',
validations: path.resolve(__dirname, 'upload-validations.js'),
},
publicKeys: [
'pubsweet-client',
'authsome',
'validations',
'pubsweet-component-aws-s3',
],
} }
const Joi = require('joi')
module.exports = {
manuscripts: Joi.any()
.valid([
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/pdf',
'application/msword',
])
.error(new Error('Only Word documents and PDFs are allowed')),
supplementary: Joi.any(),
coverLetter: Joi.any()
.valid([
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/pdf',
'application/msword',
])
.error(new Error('Only Word documents and PDFs are allowed')),
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment