From a26ea3004f5a308c65305a4c8eecbe0fafd5d30d Mon Sep 17 00:00:00 2001 From: Bennett Date: Tue, 10 Mar 2020 15:35:30 +0100 Subject: #12 Handle multiple slashes in path --- app/Middleware/HandleDoubleSlash.js | 26 ++++++++++++++++++++++++++ start/kernel.js | 1 + 2 files changed, 27 insertions(+) create mode 100644 app/Middleware/HandleDoubleSlash.js diff --git a/app/Middleware/HandleDoubleSlash.js b/app/Middleware/HandleDoubleSlash.js new file mode 100644 index 0000000..94f4fe8 --- /dev/null +++ b/app/Middleware/HandleDoubleSlash.js @@ -0,0 +1,26 @@ +'use strict' +/** @typedef {import('@adonisjs/framework/src/Request')} Request */ +/** @typedef {import('@adonisjs/framework/src/Response')} Response */ +/** @typedef {import('@adonisjs/framework/src/View')} View */ + +class HandleDoubleSlash { + /** + * @param {object} ctx + * @param {Request} ctx.request + * @param {Function} next + */ + async handle ({ request, response }, next) { + console.log(request.url()); + + // Redirect requests that contain duplicate slashes to the right path + if (request.url().includes('//')) { + return response.redirect( + request.url().replace(/\/{2,}/g, '/'), + ); + } + + await next(); + } +} + +module.exports = HandleDoubleSlash diff --git a/start/kernel.js b/start/kernel.js index b54fc29..077151a 100644 --- a/start/kernel.js +++ b/start/kernel.js @@ -54,6 +54,7 @@ const namedMiddleware = { const serverMiddleware = [ 'Adonis/Middleware/Static', 'Adonis/Middleware/Cors', + 'App/Middleware/HandleDoubleSlash', ]; Server -- cgit v1.2.3-54-g00ecf