unpkg/modules/middleware/allowQuery.js

28 lines
683 B
JavaScript

import createSearch from '../utils/createSearch.js';
/**
* Reject URLs with invalid query parameters to increase cache hit rates.
*/
export default function allowQuery(validKeys = []) {
if (!Array.isArray(validKeys)) {
validKeys = [validKeys];
}
return (req, res, next) => {
const keys = Object.keys(req.query);
if (!keys.every(key => validKeys.includes(key))) {
const newQuery = keys
.filter(key => validKeys.includes(key))
.reduce((query, key) => {
query[key] = req.query[key];
return query;
}, {});
return res.redirect(302, req.baseUrl + req.path + createSearch(newQuery));
}
next();
};
}