Commit 43b44d68669e7925fb1f9b98e7c1461c06f25d7d
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 |