Commit 43b44d68669e7925fb1f9b98e7c1461c06f25d7d

Authored by Adhidarma Hadiwinoto
1 parent 1a044004fb
Exists in master

Perbaikan jika tidak ada config.sdk_supplier_product_quota

Showing 1 changed file with 2 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
19 && config.sdk_supplier_product_quota.session_secret) || uniqid(),
19 resave: true, 20 resave: true,
20 saveUninitialized: false, 21 saveUninitialized: false,
21 })); 22 }));
22 23
23 const viewsDir = path.join(__dirname, 'views'); 24 const viewsDir = path.join(__dirname, 'views');
24 nunjucks.configure(viewsDir, { 25 nunjucks.configure(viewsDir, {
25 autoescape: true, 26 autoescape: true,
26 express: app, 27 express: app,
27 noCache: config.sdk_supplier_product_quota && config.sdk_supplier_product_quota.no_cache, 28 noCache: config.sdk_supplier_product_quota && config.sdk_supplier_product_quota.no_cache,
28 }); 29 });
29 30
30 const staticDir = path.join(__dirname, 'public'); 31 const staticDir = path.join(__dirname, 'public');
31 app.use(express.static(staticDir)); 32 app.use(express.static(staticDir));
32 logger.info(`${MODULE_NAME}: Serving static files on ${staticDir}`); 33 logger.info(`${MODULE_NAME}: Serving static files on ${staticDir}`);
33 34
34 function validateSession(req, res, next) { 35 function validateSession(req, res, next) {
35 if (!req.session.terminal || !req.session.terminal.id) { 36 if (!req.session.terminal || !req.session.terminal.id) {
36 res.redirect('/login'); 37 res.redirect('/login');
37 return; 38 return;
38 } 39 }
39 40
40 next(); 41 next();
41 } 42 }
42 43
43 app.use((req, res, next) => { 44 app.use((req, res, next) => {
44 res.locals.handler_name = config.handler_name; 45 res.locals.handler_name = config.handler_name;
45 res.locals.xid = uniqid(); 46 res.locals.xid = uniqid();
46 next(); 47 next();
47 }); 48 });
48 49
49 app.get('/', (req, res) => { 50 app.get('/', (req, res) => {
50 res.redirect('/main'); 51 res.redirect('/main');
51 }); 52 });
52 53
53 app.get('/logout', (req, res) => { 54 app.get('/logout', (req, res) => {
54 req.session.terminal = null; 55 req.session.terminal = null;
55 req.session.store = null; 56 req.session.store = null;
56 57
57 res.redirect('/login'); 58 res.redirect('/login');
58 }); 59 });
59 60
60 app.get('/login', (req, res) => { 61 app.get('/login', (req, res) => {
61 res.render('signin.njk'); 62 res.render('signin.njk');
62 }); 63 });
63 64
64 app.post('/login', express.urlencoded({ extended: false }), async (req, res) => { 65 app.post('/login', express.urlencoded({ extended: false }), async (req, res) => {
65 const { username, password } = req.body; 66 const { username, password } = req.body;
66 const terminal = await coreTerminalAuth.validateWebPassword(username, password); 67 const terminal = await coreTerminalAuth.validateWebPassword(username, password);
67 68
68 if (!terminal || !terminal.store_is_super) { 69 if (!terminal || !terminal.store_is_super) {
69 res.redirect('/login'); 70 res.redirect('/login');
70 return; 71 return;
71 } 72 }
72 73
73 if ( 74 if (
74 config.sdk_supplier_product_quota 75 config.sdk_supplier_product_quota
75 && !config.sdk_supplier_product_quota.allow_non_super_terminal_login 76 && !config.sdk_supplier_product_quota.allow_non_super_terminal_login
76 && !terminal.terminal_is_super 77 && !terminal.terminal_is_super
77 ) { 78 ) {
78 res.redirect('/login'); 79 res.redirect('/login');
79 return; 80 return;
80 } 81 }
81 82
82 req.session.terminal = { 83 req.session.terminal = {
83 id: terminal.id, 84 id: terminal.id,
84 name: terminal.name, 85 name: terminal.name,
85 super: terminal.terminal_is_super, 86 super: terminal.terminal_is_super,
86 }; 87 };
87 88
88 req.session.store = { 89 req.session.store = {
89 id: terminal.store_id, 90 id: terminal.store_id,
90 name: terminal.store_name, 91 name: terminal.store_name,
91 super: terminal.store_is_super, 92 super: terminal.store_is_super,
92 }; 93 };
93 94
94 res.redirect('/'); 95 res.redirect('/');
95 }); 96 });
96 97
97 app.use('/main', validateSession, routerMain); 98 app.use('/main', validateSession, routerMain);
98 99
99 const listenPort = config.sdk_supplier_product_quota && config.sdk_supplier_product_quota.port; 100 const listenPort = config.sdk_supplier_product_quota && config.sdk_supplier_product_quota.port;
100 if (listenPort) { 101 if (listenPort) {
101 app.listen(listenPort, () => { 102 app.listen(listenPort, () => {
102 logger.info(`4226C307 ${MODULE_NAME}: Control panel ready`, { listenPort }); 103 logger.info(`4226C307 ${MODULE_NAME}: Control panel ready`, { listenPort });
103 }).on('error', (err) => { 104 }).on('error', (err) => {
104 logger.warn(`83FB2789 ${MODULE_NAME}: Control panel failed to start`, { 105 logger.warn(`83FB2789 ${MODULE_NAME}: Control panel failed to start`, {
105 listenPort, eCode: err.code, eMessage: err.message, 106 listenPort, eCode: err.code, eMessage: err.message,
106 }); 107 });
107 }); 108 });
108 } 109 }
109 110