added special router for legacy browsers
This commit is contained in:
parent
74f3706852
commit
73d98c0ac1
45
package-lock.json
generated
45
package-lock.json
generated
@ -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"
|
||||
}
|
||||
|
@ -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
19
src/legacy/middleware.js
Normal 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
8
src/legacy/router.js
Normal file
@ -0,0 +1,8 @@
|
||||
import express from 'express';
|
||||
const app = express.Router();
|
||||
|
||||
app.get('*', function (req, res) {
|
||||
res.render('index');
|
||||
});
|
||||
|
||||
export default app;
|
9
src/legacy/views/index.ejs
Normal file
9
src/legacy/views/index.ejs
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>HOWFEED.biz</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Hello world</h1>
|
||||
</body>
|
||||
</html>
|
@ -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}`);
|
||||
|
Loading…
x
Reference in New Issue
Block a user