Compare View

switch
from
...
to
 
Commits (3)

Changes

Showing 4 changed files Inline Diff

control-panel/lib/misc.js
1 "use strict"; 1 "use strict";
2 2
3 const querystring = require('querystring'); 3 const querystring = require('querystring');
4 4
5 function needAuthUser(req, res, next) { 5 function needAuthUser(req, res, next) {
6 if (!req || !req.session || !req.session.username) { 6 if (!req || !req.session || !req.session.username) {
7 const qs = { 7 const qs = {
8 msg: 'Anda diharuskan login sebagai super terminal dari super password untuk mengakses halaman yang diminta.', 8 msg: 'Anda diharuskan login sebagai super terminal dari super password untuk mengakses halaman yang diminta.',
9 ref: req.get('Referer') 9 ref: req.get('Referer')
10 }; 10 };
11 11
12 res.redirect('/login?' + querystring.stringify(qs)); 12 res.redirect('/login?' + querystring.stringify(qs));
13 return; 13 return;
14 } 14 }
15 15
16 next(); 16 next();
17 } 17 }
18 18
19 exports.needAuthUser = needAuthUser; 19 exports.needAuthUser = needAuthUser;
20 20
control-panel/lib/router-login.js
1 "use strict"; 1 "use strict";
2 2
3 const module_name = 'CONTROL_PANEL_' + require('path').basename(__filename); 3 const module_name = 'CONTROL_PANEL_' + require('path').basename(__filename);
4 4
5 const querystring = require('querystring'); 5 const querystring = require('querystring');
6 const express = require('express'); 6 const express = require('express');
7 const bodyParser = require('body-parser'); 7 const bodyParser = require('body-parser');
8 const router = express.Router(); 8 const router = express.Router();
9 9
10 const config = require('komodo-sdk/config'); 10 const config = require('komodo-sdk/config');
11 const logger = require('komodo-sdk/logger'); 11 const logger = require('komodo-sdk/logger');
12 12
13 const requestToCore = require('./request-to-core'); 13 const requestToCore = require('./request-to-core');
14 14
15 function pageLogin(req, res, next) { 15 function pageLogin(req, res, next) {
16 if (req.session && req.session.username && req.session.terminal) { 16 if (req.session && req.session.username && req.session.terminal) {
17 res.redirect('/'); 17 res.redirect('/');
18 return; 18 return;
19 } 19 }
20 20
21 res.render( 21 res.render(
22 req.app.locals.cp_views_dir + '/login.html', 22 req.app.locals.cp_views_dir + '/login.html',
23 { 23 {
24 ref: req.query.ref, 24 ref: req.query.ref,
25 msg: req.query.msg 25 msg: req.query.msg
26 } 26 }
27 ) 27 )
28 } 28 }
29 29
30 function pageLoginSubmitted(req, res, next) { 30 function pageLoginSubmitted(req, res, next) {
31 const method_name = 'pageLoginSubmitted'; 31 const method_name = 'pageLoginSubmitted';
32 32
33 if (!req || !req.body || !req.body.terminal_name || !req.body.password) { 33 if (!req || !req.body || !req.body.terminal_name || !req.body.password) {
34 const qs = { 34 const qs = {
35 msg: 'Nama terminal dan password harus diisi', 35 msg: 'Nama terminal dan password harus diisi',
36 ref: req.query.ref 36 ref: req.query.ref
37 }; 37 };
38 38
39 res.redirect('/login?' + querystring.stringify(qs)); 39 res.redirect('/login?' + querystring.stringify(qs));
40 return; 40 return;
41 } 41 }
42 42
43 const qs = { 43 const qs = {
44 terminal_name: req.body.terminal_name, 44 terminal_name: req.body.terminal_name,
45 web_password: req.body.password, 45 web_password: req.body.password,
46 request_by: config.handler_name || config.username || config.origin 46 request_by: config.handler_name || config.username || config.origin
47 } 47 }
48 48
49 requestToCore.doRequestAndParse('/services/terminalAuthentication', qs, function(err, coreResponse) { 49 requestToCore.doRequestAndParse('/services/terminalAuthentication', qs, function(err, coreResponse) {
50 if (err) { 50 if (err) {
51 logger.warn('Error requesting authentication check to CORE', {module_name: module_name, method_name: method_name, err: err}); 51 logger.warn('Error requesting authentication check to CORE', {module_name: module_name, method_name: method_name, err: err});
52 res.end('SOMETHING WRONG'); 52 res.end('SOMETHING WRONG');
53 return; 53 return;
54 } 54 }
55 55
56 const redirectQs = { 56 const redirectQs = {
57 terminal_name: req.body.terminal_name, 57 terminal_name: req.body.terminal_name,
58 ref: req.query.ref 58 ref: req.query.ref
59 } 59 }
60 60
61 if (coreResponse.message) { 61 if (coreResponse.message) {
62 redirectQs.msg = coreResponse.message; 62 redirectQs.msg = coreResponse.message;
63 } 63 }
64 64
65 if (coreResponse.error) { 65 if (coreResponse.error) {
66 res.redirect('/login?' + querystring.stringify(redirectQs)); 66 res.redirect('/login?' + querystring.stringify(redirectQs));
67 return; 67 return;
68 } 68 }
69 69
70 if (!coreResponse.terminal) { 70 if (!coreResponse.terminal) {
71 redirectQs.msg = 'Terminal tidak terdefinisi'; 71 redirectQs.msg = 'Terminal tidak terdefinisi';
72 res.redirect('/login?' + querystring.stringify(redirectQs)); 72 res.redirect('/login?' + querystring.stringify(redirectQs));
73 return; 73 return;
74 } 74 }
75 75
76 if (!coreResponse.terminal.super || !coreResponse.terminal.store_is_super) { 76 if (!coreResponse.terminal.super || !coreResponse.terminal.store_is_super) {
77 redirectQs.msg = 'Hanya super terminal pada super store yang dapat mengakses sistem.'; 77 redirectQs.msg = 'Hanya super terminal pada super store yang dapat mengakses sistem.';
78 res.redirect('/login?' + querystring.stringify(redirectQs)); 78 res.redirect('/login?' + querystring.stringify(redirectQs));
79 return; 79 return;
80 } 80 }
81 81
82 req.session.username = req.body.terminal_name; 82 req.session.username = req.body.terminal_name;
83 req.session.terminal = coreResponse.terminal; 83 req.session.terminal = coreResponse.terminal;
84 84
85 let redirectUrl = req.query.ref || '/'; 85 let redirectUrl = req.query.ref || '/';
86 res.redirect(redirectUrl); 86 res.redirect(redirectUrl);
87 }); 87 });
88 } 88 }
89 89
90 function pageLogout(req, res, next) { 90 function pageLogout(req, res, next) {
91 req.session.username = null; 91 req.session.username = null;
92 req.session.terminal = null; 92 req.session.terminal = null;
93 93
94 res.redirect('/login'); 94 res.redirect('/login');
95 } 95 }
96 96
97 router.get('/', pageLogin); 97 router.get('/', pageLogin);
98 router.post('/', bodyParser.urlencoded({extended: true}), pageLoginSubmitted); 98 router.post('/', bodyParser.urlencoded({extended: true}), pageLoginSubmitted);
99 router.get('/out', pageLogout); 99 router.get('/out', pageLogout);
100 100
101 module.exports = router; 101 module.exports = router;
102 102
control-panel/views/config.jsoneditor.html
1 {% extends cp_views_dir + "/template.html" %} 1 {% extends cp_views_dir + "/template.html" %}
2 2
3 {% block head %} 3 {% block head %}
4 <link href="/control-panel/jsoneditor/jsoneditor.css" rel="stylesheet" type="text/css"> 4 <link href="/control-panel/jsoneditor/jsoneditor.css" rel="stylesheet" type="text/css">
5 <script src="/control-panel/jsoneditor/jsoneditor.js"></script> 5 <script src="/control-panel/jsoneditor/jsoneditor.js"></script>
6 {% endblock %} 6 {% endblock %}
7 7
8 {% block content %} 8 {% block content %}
9 9
10 <h2>{{ page_title }}</h2> 10 <h2>{{ page_title }}</h2>
11 11
12 <div id="jsoneditor"></div> 12 <div id="jsoneditor"></div>
13 13
14 <script> 14 <script>
15 function saveData() { 15 function saveData() {
16 //window.alert(JSON.stringify(editor.get())); 16 //window.alert(JSON.stringify(editor.get()));
17 jQuery.ajax({ 17 jQuery.ajax({
18 type: "POST", 18 type: "POST",
19 url: '/config/data', 19 url: '/config/data',
20 contentType: 'application/json', 20 contentType: 'application/json',
21 data: JSON.stringify(editor.get()), 21 data: JSON.stringify(editor.get()),
22 success: function(responseBody, textStatus, jqXHR) { 22 success: function(responseBody, textStatus, jqXHR) {
23 window.alert(responseBody); 23 window.alert(responseBody);
24 location.reload(); 24 location.reload();
25 } 25 }
26 }); 26 });
27 } 27 }
28 28
29 function loadData() { 29 function loadData() {
30 jQuery.ajax('/config/data').done(function(data) { 30 jQuery.ajax('/config/data').done(function(data) {
31 editor.setName('CONFIG'); 31 editor.setName('CONFIG');
32 editor.set(data); 32 editor.set(data);
33 editor.expandAll(); 33 editor.expandAll();
34 }); 34 });
35 } 35 }
36 36
37 var container = document.getElementById("jsoneditor"); 37 var container = document.getElementById("jsoneditor");
38 var options = { 38 var options = {
39 mode: '{{ jsoneditor_mode }}', 39 mode: '{{ jsoneditor_mode }}',
40 modes: ["form", "tree", "code"], 40 modes: ["form", "tree", "code"],
41 onChange: function() { 41 onChange: function() {
42 $("#buttonSubmit").removeAttr('disabled'); 42 $("#buttonSubmit").removeAttr('disabled');
43 } 43 }
44 }; 44 };
45 45
46 var editor = new JSONEditor(container, options); 46 var editor = new JSONEditor(container, options);
47 loadData(); 47 loadData();
48 48
49 </script> 49 </script>
50 50
51 <br><br> 51 <br><br>
52 52
53 <div class="panel panel-default"> 53 <div class="panel panel-default">
54 <div class="panel-body"> 54 <div class="panel-body">
55 55
56 <button id="buttonSubmit" type="submit" class="btn btn-primary" 56 <button id="buttonSubmit" type="submit" class="btn btn-primary"
57 onclick="saveData()" 57 onclick="saveData()"
58 disabled 58 disabled
59 > 59 >
60 Eksekusi dan Simpan 60 Eksekusi dan Simpan
61 </button> 61 </button>
62 62
63 <button id="buttonSubmit" type="submit" class="btn btn-primary" 63 <button id="buttonSubmit" type="submit" class="btn btn-primary"
64 onclick="location.reload()" 64 onclick="location.reload()"
65 > 65 >
66 Reload Konfigurasi 66 Reload Konfigurasi
67 </button> 67 </button>
68 68
69 <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#restartConfirmationModal"> 69 <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#restartConfirmationModal">
70 Restart Aplikasi 70 Restart Aplikasi
71 </button> 71 </button>
72 72
73 </div> 73 </div>
74 </div> 74 </div>
75 75
76 {% include cp_views_dir + "/restart.confirmation.modal.html" %} 76 {% include cp_views_dir + "/restart.confirmation.modal.html" %}
77 77
78 {% include "views/config.help.html" ignore missing %} 78 {% include "views/config.help.html" ignore missing %}
79 79
80 {% endblock %} 80 {% endblock %}
81 81
1 { 1 {
2 "name": "komodo-sdk", 2 "name": "komodo-sdk",
3 "version": "1.10.4", 3 "version": "1.10.5",
4 "description": "SDK for Komodo", 4 "description": "SDK for Komodo",
5 "main": "index.js", 5 "main": "index.js",
6 "scripts": { 6 "scripts": {
7 "test": "mocha", 7 "test": "mocha",
8 "postversion": "git push && git push --tags" 8 "postversion": "git push && git push --tags"
9 }, 9 },
10 "repository": { 10 "repository": {
11 "type": "git", 11 "type": "git",
12 "url": "git@gitlab.kodesumber.com:komodo/komodo-sdk.git" 12 "url": "git@gitlab.kodesumber.com:komodo/komodo-sdk.git"
13 }, 13 },
14 "keywords": [ 14 "keywords": [
15 "ppob", 15 "ppob",
16 "payment", 16 "payment",
17 "komodo" 17 "komodo"
18 ], 18 ],
19 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>", 19 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>",
20 "license": "ISC", 20 "license": "ISC",
21 "dependencies": { 21 "dependencies": {
22 "basic-auth": "^2.0.0", 22 "basic-auth": "^2.0.0",
23 "body-parser": "^1.18.2", 23 "body-parser": "^1.18.2",
24 "express": "^4.16.2", 24 "express": "^4.16.2",
25 "express-session": "^1.15.6", 25 "express-session": "^1.15.6",
26 "lru-cache": "^4.1.1", 26 "lru-cache": "^4.1.1",
27 "moment": "^2.19.1", 27 "moment": "^2.19.1",
28 "numeral": "^2.0.6", 28 "numeral": "^2.0.6",
29 "nunjucks": "^3.0.1", 29 "nunjucks": "^3.0.1",
30 "request": "^2.81.0", 30 "request": "^2.81.0",
31 "simple-git": "^1.80.1", 31 "simple-git": "^1.80.1",
32 "strftime": "^0.10.0", 32 "strftime": "^0.10.0",
33 "uniqid": "^4.1.1", 33 "uniqid": "^4.1.1",
34 "uuid": "^3.1.0", 34 "uuid": "^3.1.0",
35 "winston": "^2.3.1", 35 "winston": "^2.3.1",
36 "winston-circular-buffer": "^1.0.0", 36 "winston-circular-buffer": "^1.0.0",
37 "winston-daily-rotate-file": "^1.4.6" 37 "winston-daily-rotate-file": "^1.4.6"
38 } 38 }
39 } 39 }
40 40