|
1 |
| -const config = require('./config') |
| 1 | +module.exports = () => { |
| 2 | + const config = require('./config') |
2 | 3 |
|
3 |
| -let debug = require('debug') |
| 4 | + const debug = require('debug')('viblo-frontend') |
4 | 5 |
|
5 |
| -// Import and Set Nuxt.js options |
6 |
| -if (config.debug) { |
7 |
| - debug.enable('*') |
8 |
| -} |
9 |
| - |
10 |
| -debug = debug('viblo-frontend') |
11 |
| - |
12 |
| -debug('Loading components.') |
13 |
| - |
14 |
| -const nuxt = require('./nuxt') |
15 |
| -const session = require('./session') |
16 |
| -const proxy = require('./proxy') |
17 |
| -const router = require('./router') |
18 |
| -const cookie = require('cookie-parser')() |
19 |
| -const csrf = require('csurf')() |
20 |
| -const axios = require('axios') |
21 |
| -const viewCounter = require('./middleware/views') |
22 |
| - |
23 |
| -debug('Components loaded.') |
24 |
| - |
25 |
| -const app = require('express')() |
| 6 | + debug('Loading components.') |
26 | 7 |
|
27 |
| -process.on('unhandledRejection', r => console.log(r)) |
| 8 | + const session = require('./session') |
| 9 | + const cookie = require('cookie-parser')() |
| 10 | + const csrf = require('csurf')() |
28 | 11 |
|
29 |
| -app.use(session) |
30 |
| -app.use(cookie) |
31 |
| -app.use(csrf) |
| 12 | + debug('Components loaded.') |
32 | 13 |
|
33 |
| -axios.interceptors.request.use(function (request) { |
34 |
| - if (request.url.startsWith(config.node.url + '/api')) { |
35 |
| - let url = config.api.url + request.url.substr(config.node.url.length + 4) |
36 |
| - debug(request.url + ' > ' + url) |
37 |
| - request.url = url |
38 |
| - } |
39 |
| - return request |
40 |
| -}) |
| 14 | + const app = require('express')() |
41 | 15 |
|
42 |
| -axios.interceptors.response.use(function (response) { |
43 |
| - return response |
44 |
| -}, function (error) { |
45 |
| - if (error.response) { |
46 |
| - console.log(error.response.data) |
47 |
| - } else { |
48 |
| - console.log(error) |
49 |
| - } |
50 |
| - return Promise.reject(error) |
51 |
| -}) |
| 16 | + app.use(session) |
| 17 | + app.use(cookie) |
| 18 | + app.use(csrf) |
52 | 19 |
|
53 |
| -app.use((req, res, next) => { |
54 |
| - if (req.session && req.session.token) { |
55 |
| - // Temporary workaround to inject token into server-side requests |
56 |
| - // after finished refactoring of API routes, must be changed |
57 |
| - let authorization = `${req.session.token.token_type} ${req.session.token.access_token}` |
58 |
| - axios.defaults.headers.common['Authorization'] = authorization |
59 |
| - } |
60 |
| - next() |
61 |
| -}) |
| 20 | + app.use((req, res, next) => { |
| 21 | + res.cookie('XSRF-TOKEN', req.csrfToken(), {}) |
| 22 | + res.locals.csrftoken = req.csrfToken() |
| 23 | + next() |
| 24 | + }) |
62 | 25 |
|
63 |
| -app.use((req, res, next) => { |
64 |
| - res.cookie('XSRF-TOKEN', req.csrfToken(), {}) |
65 |
| - res.locals.csrftoken = req.csrfToken() |
66 |
| - next() |
67 |
| -}) |
| 26 | + app.use((req, res, next) => { |
| 27 | + // Share public config to frontend |
| 28 | + req.config = config |
| 29 | + next() |
| 30 | + }) |
68 | 31 |
|
69 |
| -app.use((req, res, next) => { |
70 |
| - // Share public config to frontend |
71 |
| - req.config = config |
72 |
| - next() |
73 |
| -}) |
| 32 | + app.use((req, res, next) => { |
| 33 | + if (req.session && (req.session.token || req.session.user || req.session.settings)) { |
| 34 | + res.header('Cache-Control', 'no-cache, no-store, must-revalidate') |
| 35 | + res.header('Pragma', 'no-cache') |
| 36 | + } else { |
| 37 | + res.header('Cache-Control', 'public, max-age=5') |
| 38 | + } |
| 39 | + next() |
| 40 | + }) |
74 | 41 |
|
75 |
| -router.get(['/:user/posts/:post', '/api/posts/:post', '/p/:post'], viewCounter) |
76 |
| - |
77 |
| -app.use('/api', proxy) |
78 |
| -app.use('/', router) |
79 |
| - |
80 |
| -app.use('/admin', (req, res, next) => { |
81 |
| - if (!req.session || !req.session.user || !req.session.user.admin_access) { |
82 |
| - res.redirect('/') |
83 |
| - } else { |
84 |
| - return next() |
85 |
| - } |
86 |
| -}) |
87 |
| - |
88 |
| -app.get('/sitemap.xml', require('./routes/sitemap')) |
89 |
| - |
90 |
| -app.use(nuxt.render) |
91 |
| - |
92 |
| -module.exports = app |
| 42 | + return app |
| 43 | +} |
0 commit comments