Commit 4426f7ad29b344efc48a2b3f37bec60d9e319e13

Authored by Adhidarma Hadiwinoto
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