28 lines
683 B
JavaScript
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();
|
|
};
|
|
}
|