refactor(app.js): Extract middleware to module
extract check URi is valid, redirect without trailing slashes
This commit is contained in:
parent
7ba0d600f1
commit
dee77c459a
3 changed files with 33 additions and 20 deletions
22
app.js
22
app.js
|
@ -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
|
||||||
|
|
14
lib/web/middleware/checkURiValid.js
Normal file
14
lib/web/middleware/checkURiValid.js
Normal 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()
|
||||||
|
}
|
17
lib/web/middleware/redirectWithoutTrailingSlashes.js
Normal file
17
lib/web/middleware/redirectWithoutTrailingSlashes.js
Normal 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()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue