Commit 4426f7ad29b344efc48a2b3f37bec60d9e319e13
1 parent
14146d94d9
Exists in
master
noCache on config
Showing 1 changed file with 1 additions and 1 deletions Inline Diff
lib/control-panel/index.js
1 | const MODULE_NAME = 'SDK-SUPPLIER-PRODUCT-QUOTA.CONTROL-PANEL'; | 1 | const MODULE_NAME = 'SDK-SUPPLIER-PRODUCT-QUOTA.CONTROL-PANEL'; |
2 | 2 | ||
3 | const path = require('path'); | 3 | const path = require('path'); |
4 | const express = require('express'); | 4 | const express = require('express'); |
5 | const nunjucks = require('nunjucks'); | 5 | const nunjucks = require('nunjucks'); |
6 | const session = require('express-session'); | 6 | const session = require('express-session'); |
7 | const uniqid = require('uniqid'); | 7 | const uniqid = require('uniqid'); |
8 | 8 | ||
9 | const config = require('komodo-sdk/config'); | 9 | const config = require('komodo-sdk/config'); |
10 | const logger = require('komodo-sdk/logger'); | 10 | const logger = require('komodo-sdk/logger'); |
11 | 11 | ||
12 | const routerMain = require('./routers/main'); | 12 | const routerMain = require('./routers/main'); |
13 | const coreTerminalAuth = require('../core-terminal-auth'); | 13 | const coreTerminalAuth = require('../core-terminal-auth'); |
14 | 14 | ||
15 | const app = express(); | 15 | const app = express(); |
16 | 16 | ||
17 | app.use(session({ | 17 | app.use(session({ |
18 | secret: config.sdk_supplier_product_quota.session_secret, | 18 | secret: config.sdk_supplier_product_quota.session_secret, |
19 | resave: true, | 19 | resave: true, |
20 | saveUninitialized: false, | 20 | saveUninitialized: false, |
21 | })); | 21 | })); |
22 | 22 | ||
23 | const viewsDir = path.join(__dirname, 'views'); | 23 | const viewsDir = path.join(__dirname, 'views'); |
24 | nunjucks.configure(viewsDir, { | 24 | nunjucks.configure(viewsDir, { |
25 | autoescape: true, | 25 | autoescape: true, |
26 | express: app, | 26 | express: app, |
27 | noCache: true, | 27 | noCache: config.sdk_supplier_product_quota && config.sdk_supplier_product_quota.no_cache, |
28 | }); | 28 | }); |
29 | 29 | ||
30 | const staticDir = path.join(__dirname, 'public'); | 30 | const staticDir = path.join(__dirname, 'public'); |
31 | app.use(express.static(staticDir)); | 31 | app.use(express.static(staticDir)); |
32 | logger.info(`${MODULE_NAME}: Serving static files on ${staticDir}`); | 32 | logger.info(`${MODULE_NAME}: Serving static files on ${staticDir}`); |
33 | 33 | ||
34 | function validateSession(req, res, next) { | 34 | function validateSession(req, res, next) { |
35 | if (!req.session.terminal || !req.session.terminal.id) { | 35 | if (!req.session.terminal || !req.session.terminal.id) { |
36 | res.redirect('/login'); | 36 | res.redirect('/login'); |
37 | return; | 37 | return; |
38 | } | 38 | } |
39 | 39 | ||
40 | next(); | 40 | next(); |
41 | } | 41 | } |
42 | 42 | ||
43 | app.use((req, res, next) => { | 43 | app.use((req, res, next) => { |
44 | res.locals.handler_name = config.handler_name; | 44 | res.locals.handler_name = config.handler_name; |
45 | res.locals.xid = uniqid(); | 45 | res.locals.xid = uniqid(); |
46 | next(); | 46 | next(); |
47 | }); | 47 | }); |
48 | 48 | ||
49 | app.get('/', (req, res) => { | 49 | app.get('/', (req, res) => { |
50 | res.redirect('/main'); | 50 | res.redirect('/main'); |
51 | }); | 51 | }); |
52 | 52 | ||
53 | app.get('/logout', (req, res) => { | 53 | app.get('/logout', (req, res) => { |
54 | req.session.terminal = null; | 54 | req.session.terminal = null; |
55 | req.session.store = null; | 55 | req.session.store = null; |
56 | 56 | ||
57 | res.redirect('/login'); | 57 | res.redirect('/login'); |
58 | }); | 58 | }); |
59 | 59 | ||
60 | app.get('/login', (req, res) => { | 60 | app.get('/login', (req, res) => { |
61 | res.render('signin.njk'); | 61 | res.render('signin.njk'); |
62 | }); | 62 | }); |
63 | 63 | ||
64 | app.post('/login', express.urlencoded({ extended: false }), async (req, res) => { | 64 | app.post('/login', express.urlencoded({ extended: false }), async (req, res) => { |
65 | const { username, password } = req.body; | 65 | const { username, password } = req.body; |
66 | const terminal = await coreTerminalAuth.validateWebPassword(username, password); | 66 | const terminal = await coreTerminalAuth.validateWebPassword(username, password); |
67 | 67 | ||
68 | if (!terminal || !terminal.terminal_is_super || !terminal.store_is_super) { | 68 | if (!terminal || !terminal.terminal_is_super || !terminal.store_is_super) { |
69 | res.redirect('/login'); | 69 | res.redirect('/login'); |
70 | return; | 70 | return; |
71 | } | 71 | } |
72 | 72 | ||
73 | req.session.terminal = { | 73 | req.session.terminal = { |
74 | id: terminal.id, | 74 | id: terminal.id, |
75 | name: terminal.name, | 75 | name: terminal.name, |
76 | super: terminal.terminal_is_super, | 76 | super: terminal.terminal_is_super, |
77 | }; | 77 | }; |
78 | 78 | ||
79 | req.session.store = { | 79 | req.session.store = { |
80 | id: terminal.store_id, | 80 | id: terminal.store_id, |
81 | name: terminal.store_name, | 81 | name: terminal.store_name, |
82 | super: terminal.store_is_super, | 82 | super: terminal.store_is_super, |
83 | }; | 83 | }; |
84 | 84 | ||
85 | res.redirect('/'); | 85 | res.redirect('/'); |
86 | }); | 86 | }); |
87 | 87 | ||
88 | app.use('/main', validateSession, routerMain); | 88 | app.use('/main', validateSession, routerMain); |
89 | 89 | ||
90 | const listenPort = config.sdk_supplier_product_quota && config.sdk_supplier_product_quota.port; | 90 | const listenPort = config.sdk_supplier_product_quota && config.sdk_supplier_product_quota.port; |
91 | if (listenPort) { | 91 | if (listenPort) { |
92 | app.listen(listenPort, () => { | 92 | app.listen(listenPort, () => { |
93 | logger.info(`4226C307 ${MODULE_NAME}: Control panel ready`, { listenPort }); | 93 | logger.info(`4226C307 ${MODULE_NAME}: Control panel ready`, { listenPort }); |
94 | }).on('error', (err) => { | 94 | }).on('error', (err) => { |
95 | logger.warn(`83FB2789 ${MODULE_NAME}: Control panel failed to start`, { | 95 | logger.warn(`83FB2789 ${MODULE_NAME}: Control panel failed to start`, { |
96 | listenPort, eCode: err.code, eMessage: err.message, | 96 | listenPort, eCode: err.code, eMessage: err.message, |
97 | }); | 97 | }); |
98 | }); | 98 | }); |
99 | } | 99 | } |
100 | 100 |