2015-08-18 15:22:28 -07:00
|
|
|
const pathsOfNoReturn = [
|
|
|
|
'link',
|
|
|
|
'auth',
|
|
|
|
'login',
|
|
|
|
'logout',
|
|
|
|
'signin',
|
|
|
|
'signup',
|
|
|
|
'fonts',
|
|
|
|
'favicon',
|
|
|
|
'js',
|
|
|
|
'css'
|
|
|
|
];
|
|
|
|
|
2015-09-23 14:54:08 -07:00
|
|
|
const pathsWhiteList = [
|
|
|
|
'news',
|
|
|
|
'challenges',
|
|
|
|
'map',
|
2015-12-28 12:41:37 -08:00
|
|
|
'news',
|
|
|
|
'commit'
|
2015-09-23 14:54:08 -07:00
|
|
|
];
|
|
|
|
|
2015-08-18 15:22:28 -07:00
|
|
|
const pathsOfNoReturnRegex = new RegExp(pathsOfNoReturn.join('|'), 'i');
|
2015-09-23 14:54:08 -07:00
|
|
|
const whiteListRegex = new RegExp(pathsWhiteList.join('|'), 'i');
|
2015-08-18 15:22:28 -07:00
|
|
|
|
2015-08-04 01:25:34 -07:00
|
|
|
export default function addReturnToUrl() {
|
|
|
|
return function(req, res, next) {
|
|
|
|
// Remember original destination before login.
|
|
|
|
var path = req.path.split('/')[1];
|
2015-08-18 15:22:28 -07:00
|
|
|
|
2015-09-23 14:54:08 -07:00
|
|
|
if (
|
|
|
|
req.method !== 'GET' ||
|
|
|
|
pathsOfNoReturnRegex.test(path) ||
|
|
|
|
!whiteListRegex.test(path) ||
|
2018-07-31 16:34:32 +01:00
|
|
|
(/hot/i).test(req.path)
|
2015-09-23 14:54:08 -07:00
|
|
|
) {
|
2015-08-04 01:25:34 -07:00
|
|
|
return next();
|
|
|
|
}
|
2018-05-15 06:12:05 +01:00
|
|
|
req.session.returnTo = req.originalUrl.includes('/map') ?
|
|
|
|
'/' :
|
2016-03-02 20:54:14 -08:00
|
|
|
req.originalUrl;
|
|
|
|
return next();
|
2015-08-04 01:25:34 -07:00
|
|
|
};
|
|
|
|
}
|