added special router for legacy browsers

This commit is contained in:
scoliono 2020-09-03 18:06:36 -07:00
parent 74f3706852
commit 73d98c0ac1
6 changed files with 115 additions and 49 deletions

45
package-lock.json generated
View File

@ -1747,7 +1747,6 @@
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
@ -1859,6 +1858,11 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
"async": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
},
"async-each": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
@ -2395,7 +2399,6 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@ -2556,7 +2559,6 @@
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
}
@ -2564,8 +2566,7 @@
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"commander": {
"version": "2.20.3",
@ -2997,6 +2998,14 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"ejs": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz",
"integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==",
"requires": {
"jake": "^10.6.1"
}
},
"electron-to-chromium": {
"version": "1.3.555",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.555.tgz",
@ -3131,8 +3140,7 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint-scope": {
"version": "4.0.3",
@ -3409,6 +3417,14 @@
"dev": true,
"optional": true
},
"filelist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz",
"integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==",
"requires": {
"minimatch": "^3.0.4"
}
},
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@ -3641,8 +3657,7 @@
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"has-symbols": {
"version": "1.0.1",
@ -4140,6 +4155,17 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
"jake": {
"version": "10.8.2",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
"integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
"requires": {
"async": "0.9.x",
"chalk": "^2.4.2",
"filelist": "^1.0.1",
"minimatch": "^3.0.4"
}
},
"jest-worker": {
"version": "26.3.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz",
@ -6373,7 +6399,6 @@
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}

View File

@ -19,6 +19,7 @@
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"ejs": "^3.1.5",
"express": "^4.17.1",
"express-fileupload": "^1.2.0",
"express-session": "^1.17.1",

19
src/legacy/middleware.js Normal file
View File

@ -0,0 +1,19 @@
/**
* (default behavior) detect if user is on IE <= 10
*/
var isMSIE = function (req) {
var ua = req.get('User-Agent');
return ua && ua.indexOf('MSIE ') > 0;
};
/**
* middleware that invokes one of two callbacks depending on if
* the client is on a legacy browser
*/
export default (cb, determiner = isMSIE) => function (req, res, next) {
if (determiner(req)) {
cb(req, res, next);
} else {
next();
}
};

8
src/legacy/router.js Normal file
View File

@ -0,0 +1,8 @@
import express from 'express';
const app = express.Router();
app.get('*', function (req, res) {
res.render('index');
});
export default app;

View File

@ -0,0 +1,9 @@
<!DOCTYPE HTML>
<html>
<head>
<title>HOWFEED.biz</title>
</head>
<body>
<h1>Hello world</h1>
</body>
</html>

View File

@ -13,10 +13,13 @@ import fs from 'fs';
import cors from 'cors';
import helmet from 'helmet';
import useragent from 'useragent';
import path from 'path';
import crypto from 'crypto';
import Article from './models/article.js';
import Category from './models/category.js';
import User from './models/user.js';
import legacyMiddleware from './legacy/middleware.js';
import legacyRouter from './legacy/router.js';
require('dotenv').config();
const FileStore = sessionFileStore(session);
@ -108,30 +111,13 @@ const isAuthor = function(req, res, next) {
};
express()
.use(helmet())
.use(cors())
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: true }))
.use(fileUpload({
limits: { fileSize: 16000000 }
}))
.use(session({
secret: SESSION_SECRET,
resave: false,
saveUninitialized: true,
cookie: {
httpOnly: true,
maxAge: 31536000
},
store: new FileStore({
path: '.sessions'
})
}))
.use(passport.initialize())
.use(passport.session())
var app = express();
app.set('view engine', 'ejs');
app.set('views', process.cwd() + '/src/legacy/views');
.post('/cms/login',
var mainRouter = express.Router();
mainRouter
.post('/cms/login',
// rateLimiterMiddleware(loginAttemptRateLimiter),
passport.authenticate('local', { failWithError: true }),
function(req, res, next) {
@ -148,7 +134,6 @@ express()
}));
}
)
.get('/cms/logout', (req, res, next) => {
req.logout();
req.session.destroy(function (err) {
@ -156,7 +141,6 @@ express()
return res.redirect('/');
});
})
.post('/cms/article/:edit?',
isAuthor,
async function(req, res, next) {
@ -255,7 +239,6 @@ express()
}
}
)
.post('/cms/upload',
isAuthor,
async function(req, res, next) {
@ -306,7 +289,6 @@ express()
}
}
)
.post('/cms/category',
isAuthor,
async function(req, res, next) {
@ -338,7 +320,6 @@ express()
}
}
)
.post('/me/avatar',
async function(req, res, next) {
if (!req.user) {
@ -399,20 +380,43 @@ express()
}));
}
}
)
);
.use(compression({ threshold: 0 }))
.use(express.static('./static'))
.use(async function (req, res, next) {
if (req.useragent.browser) {
}
})
.use(sapper.middleware({
session: req => ({
user: req.session.passport ? req.session.passport.user : null
app.use(helmet())
.use(cors())
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: true }))
.use(fileUpload({
limits: { fileSize: 16000000 }
}))
.use(session({
secret: SESSION_SECRET,
resave: false,
saveUninitialized: true,
cookie: {
httpOnly: true,
maxAge: 31536000
},
store: new FileStore({
path: '.sessions'
})
}))
.use(passport.initialize())
.use(passport.session())
.use(compression({ threshold: 0 }))
.use(express.static('./static'))
.use('/', mainRouter)
.use('/legacy', legacyRouter)
.use(legacyMiddleware((req, res) => {
if (req.baseUrl !== '/legacy') {
res.redirect('/legacy' + req.originalUrl);
}
}))
.use(sapper.middleware({
session: req => ({
user: req.session.passport ? req.session.passport.user : null
})
}))
.listen(PORT, err => {
if (err) console.log('error', err);
console.log(`Express server listening on port ${PORT}`);