diff --git a/demo/collections/Upload.js b/demo/collections/Upload.js index 082b369bef..1e76ea703e 100644 --- a/demo/collections/Upload.js +++ b/demo/collections/Upload.js @@ -1,3 +1,5 @@ +const checkRole = require('../policies/checkRole'); + module.exports = { slug: 'uploads', labels: { @@ -6,18 +8,10 @@ module.exports = { }, useAsTitle: 'filename', policies: { - create: (req, res, next) => { - return next(); - }, - read: (req, res, next) => { - return next(); - }, - update: (req, res, next) => { - return next(); - }, - destroy: (req, res, next) => { - return next(); - }, + create: user => checkRole(['user', 'admin'], user), + read: () => true, + update: user => checkRole(['user', 'admin'], user), + destroy: user => checkRole(['user', 'admin'], user), }, fields: [ { diff --git a/demo/policies/checkRole.js b/demo/policies/checkRole.js index 56150227c4..448483fd04 100644 --- a/demo/policies/checkRole.js +++ b/demo/policies/checkRole.js @@ -4,13 +4,8 @@ * @param user * @returns {Function} */ - const checkRole = (roles, user) => { - if (user && roles.some(role => role === user.role)) { - return true; - } - - return false; + return !!(user && roles.some(role => role === user.role)); }; module.exports = checkRole; diff --git a/src/index.js b/src/index.js index d5bac5de94..c8805f66ac 100644 --- a/src/index.js +++ b/src/index.js @@ -70,7 +70,7 @@ class Payload { model: this.User, config: this.config.user, }, this.router); - } + }; registerUpload = () => { const uploadSchema = buildCollectionSchema( @@ -94,7 +94,7 @@ class Payload { }, this.router); registerUploadRoutes(this.Upload, this.config, this.router); - } + }; registerGlobals = (globals) => { validateGlobals(globals); diff --git a/src/uploads/images/imageResizer.js b/src/uploads/images/imageResizer.js index bb23295039..f491fbf2e9 100644 --- a/src/uploads/images/imageResizer.js +++ b/src/uploads/images/imageResizer.js @@ -13,28 +13,26 @@ function getOutputImageName(sourceImage, size) { export async function resizeAndSave(config, uploadConfig, file) { const sourceImage = `${config.staticDir}/${file.name}`; - - const outputSizes = []; try { const dimensions = await sizeOf(sourceImage); - uploadConfig.imageSizes.forEach(async (desiredSize) => { - if (desiredSize.width > dimensions.width) { - return; - } - const outputImageName = getOutputImageName(sourceImage, desiredSize); - await sharp(sourceImage) - .resize(desiredSize.width, desiredSize.height, { - position: desiredSize.crop || 'centre', - }) - .toFile(outputImageName); - outputSizes.push({ - name: desiredSize.name, - height: desiredSize.height, - width: desiredSize.width, - }); - }); + console.log('ook'); + return await Promise.all(uploadConfig.imageSizes + .filter(desiredSize => desiredSize.width < dimensions.width) + .map(async (desiredSize) => { + const outputImageName = getOutputImageName(sourceImage, desiredSize); + await sharp(sourceImage) + .resize(desiredSize.width, desiredSize.height, { + // would it make sense for this to be set by the uploader? + position: desiredSize.crop || 'centre', + }) + .toFile(outputImageName); + console.log({ ...desiredSize }); + return { ...desiredSize }; + })); } catch (e) { console.log('error in resize and save', e.message); } - return outputSizes; + return []; + // console.log(outputSizes); + // return outputSizes; } diff --git a/src/uploads/requestHandlers.js b/src/uploads/requestHandlers.js index 7445d70c62..e1bdeb750d 100644 --- a/src/uploads/requestHandlers.js +++ b/src/uploads/requestHandlers.js @@ -78,6 +78,7 @@ const upload = async (req, res, next, config) => { } const handlerData = await fileTypeHandler(config, req.uploadConfig, req.files.file); + // const handlerData = {}; req.model.create({ ...req.body,