From ad752c7b83a3418215d0741ba13070866ae302e3 Mon Sep 17 00:00:00 2001 From: Dan Ribbens Date: Fri, 4 Oct 2019 10:49:30 -0400 Subject: [PATCH] add model localization middleware to integrate mongoose model binding and localization --- src/index.js | 6 ++++- src/mongoose/requestHandlers/create.js | 33 +++++++++++------------ src/mongoose/requestHandlers/update.js | 1 - src/mongoose/setModelLocale.middleware.js | 9 +++++++ 4 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 src/mongoose/setModelLocale.middleware.js diff --git a/src/index.js b/src/index.js index d9437b5331..62640587c9 100644 --- a/src/index.js +++ b/src/index.js @@ -21,6 +21,7 @@ import authValidate from './auth/validate'; import authRequestHandlers from './auth/requestHandlers'; import passwordResetConfig from './auth/passwordResets/passwordReset.config'; import validateConfig from './utilities/validateConfig'; +import setModelLocaleMiddleware from './mongoose/setModelLocale.middleware'; class Payload { @@ -138,7 +139,10 @@ class Payload { } this.models[config.labels.singular] = model; - options.router.all(`/${config.slug}*`, bindModelMiddleware(model)); + options.router.all(`/${config.slug}*`, + bindModelMiddleware(model), + setModelLocaleMiddleware() + ); options.router.route(`/${config.slug}`) .get(config.policies.read, query) diff --git a/src/mongoose/requestHandlers/create.js b/src/mongoose/requestHandlers/create.js index c9c79db6a8..695a4780cc 100644 --- a/src/mongoose/requestHandlers/create.js +++ b/src/mongoose/requestHandlers/create.js @@ -1,17 +1,16 @@ -import httpStatus from 'http-status'; - -const create = (req, res) => { - req.model.setDefaultLocale(req.locale); // TODO - move to middleware - req.model.create(req.body, (err, result) => { - if (err) - return res.status(httpStatus.INTERNAL_SERVER_ERROR).json({ error: err }); - - return res.status(httpStatus.CREATED) - .json({ - message: 'success', - result: result.toJSON({ virtuals: true }) - }); - }); -}; - -export default create; +import httpStatus from 'http-status'; + +const create = (req, res) => { + req.model.create(req.body, (err, result) => { + if (err) + return res.status(httpStatus.INTERNAL_SERVER_ERROR).json({ error: err }); + + return res.status(httpStatus.CREATED) + .json({ + message: 'success', + result: result.toJSON({ virtuals: true }) + }); + }); +}; + +export default create; diff --git a/src/mongoose/requestHandlers/update.js b/src/mongoose/requestHandlers/update.js index 70acfe4f97..a92fa6f481 100644 --- a/src/mongoose/requestHandlers/update.js +++ b/src/mongoose/requestHandlers/update.js @@ -1,7 +1,6 @@ import httpStatus from 'http-status'; const update = (req, res) => { - req.model.setDefaultLocale(req.locale); // TODO - move to middleware req.model.findOne({ _id: req.params.id }, '', {}, (err, doc) => { if (!doc) return res.status(httpStatus.NOT_FOUND).send('Not Found'); diff --git a/src/mongoose/setModelLocale.middleware.js b/src/mongoose/setModelLocale.middleware.js new file mode 100644 index 0000000000..e14997acfa --- /dev/null +++ b/src/mongoose/setModelLocale.middleware.js @@ -0,0 +1,9 @@ +const setModelLocaleMiddleware = () => { + return (req, res, next) => { + if (req.locale && req.model.setDefaultLocale) + req.model.setDefaultLocale(req.locale); + next(); + }; +}; + +export default setModelLocaleMiddleware;