aboutsummaryrefslogtreecommitdiffstats
path: root/app/Middleware/HandleDoubleSlash.js
blob: c4bc05308d300769975e56c40157dd6a7838b03c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/** @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
   */
  // eslint-disable-next-line consistent-return
  async handle({ request, response }, next) {
    // 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;