refactor(app.js): Extract middleware to module

extract check URi is valid, redirect without trailing slashes
This commit is contained in:
BoHong Li 2017-04-12 05:30:04 +08:00 committed by Raccoon Li
parent 7ba0d600f1
commit dee77c459a
3 changed files with 33 additions and 20 deletions

22
app.js
View file

@ -192,28 +192,10 @@ passport.deserializeUser(function (id, done) {
}) })
// check uri is valid before going further // check uri is valid before going further
app.use(function (req, res, next) { app.use(require('./lib/web/middleware/checkURiValid'))
try {
decodeURIComponent(req.path)
} catch (err) {
logger.error(err)
return response.errorBadRequest(res)
}
next()
})
// redirect url without trailing slashes // redirect url without trailing slashes
app.use(function (req, res, next) { app.use(require('./lib/web/middleware/redirectwithoutTrailingSlashes'))
if (req.method === 'GET' && req.path.substr(-1) === '/' && req.path.length > 1) {
var query = req.url.slice(req.path.length)
var urlpath = req.path.slice(0, -1)
var serverurl = config.serverurl
if (config.urlpath) serverurl = serverurl.slice(0, -(config.urlpath.length + 1))
res.redirect(301, serverurl + urlpath + query)
} else {
next()
}
})
// routes need sessions // routes need sessions
// template files // template files

View file

@ -0,0 +1,14 @@
'use strict'
const logger = require('../../logger')
const response = require('../../response')
module.exports = function (req, res, next) {
try {
decodeURIComponent(req.path)
} catch (err) {
logger.error(err)
return response.errorBadRequest(res)
}
next()
}

View file

@ -0,0 +1,17 @@
'use strict'
const config = require('../../config')
module.exports = function (req, res, next) {
if (req.method === 'GET' && req.path.substr(-1) === '/' && req.path.length > 1) {
const queryString = req.url.slice(req.path.length)
const urlPath = req.path.slice(0, -1)
let serverURL = config.serverurl
if (config.urlpath) {
serverURL = serverURL.slice(0, -(config.urlpath.length + 1))
}
res.redirect(301, serverURL + urlPath + queryString)
} else {
next()
}
}