zet-lib 1.2.15 → 1.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/lib/zRole.js +202 -191
  2. package/lib/zRoute.js +1 -1
  3. package/package.json +1 -1
package/lib/zRole.js CHANGED
@@ -1,245 +1,256 @@
1
- const Util = require('./Util');
2
- const fs = require("fs");
3
- const myCache = require("./cache");
4
- const zRoute = require('./zRoute');
1
+ const Util = require('./Util')
2
+ const fs = require('fs')
3
+ const myCache = require('./cache')
4
+ const zRoute = require('./zRoute')
5
5
 
6
- const a = {};
6
+ const a = {}
7
7
 
8
8
  /*
9
9
  Please add your routes here
10
10
  */
11
11
 
12
- const routes = zRoute.ROUTES();
13
- const cacheRoutes = myCache.get("ROUTES");
14
- const cacheRoles = myCache.get("ROLES") || {};
12
+ const routes = zRoute.ROUTES()
13
+ const cacheRoutes = myCache.get('ROUTES')
14
+ const cacheRoles = myCache.get('ROLES') || {}
15
15
 
16
- if(cacheRoutes && cacheRoutes.length) {
17
- a.routes = process.env.NODE_ENV == "production" ? Util.arrayDeletes(cacheRoutes,["auth","test"]) : Util.arrayDeletes(cacheRoutes,["generator","auth","test"]);
16
+ if (cacheRoutes && cacheRoutes.length) {
17
+ a.routes = process.env.NODE_ENV == 'production' ? Util.arrayDeletes(cacheRoutes, ['auth', 'test']) : Util.arrayDeletes(cacheRoutes, ['generator', 'auth', 'test'])
18
18
  } else {
19
- a.routes = process.env.NODE_ENV == "production" ? Util.arrayDeletes(routes,["auth","test"]) : Util.arrayDeletes(routes,["generator","auth","test"]);
19
+ a.routes = process.env.NODE_ENV == 'production' ? Util.arrayDeletes(routes, ['auth', 'test']) : Util.arrayDeletes(routes, ['generator', 'auth', 'test'])
20
20
  }
21
21
 
22
22
  /*
23
23
  Default actions
24
24
  you can additional here
25
25
  */
26
- a.actions = ['index', 'create', 'update', 'delete', 'view', 'import', 'export','approval'];
26
+ a.actions = ['index', 'create', 'update', 'delete', 'view', 'import', 'export', 'approval']
27
27
 
28
28
  /*
29
29
  all in table roles
30
30
  */
31
31
 
32
- a.params = function (roleId) {
33
- let cacheRoles = myCache.get("ROLES");
34
- if(cacheRoles && cacheRoles.hasOwnProperty(roleId)) {
35
- return roleId ? cacheRoles[roleId].params : {};
36
- }
37
- return {}
38
- };
32
+ a.params = function (roleId) {
33
+ let cacheRoles = myCache.get('ROLES')
34
+ if (cacheRoles && cacheRoles.hasOwnProperty(roleId)) {
35
+ return roleId ? cacheRoles[roleId].params : {}
36
+ }
37
+ return {}
38
+ }
39
39
 
40
40
  a.rules = function (roleId) {
41
- return a.params(roleId);
42
- };
41
+ return a.params(roleId)
42
+ }
43
43
 
44
- a.list = (roleId, route) => {
45
- let params = a.params(roleId);
46
- return a.levels(route, params)
47
- };
44
+ a.list = (roleId, route) => {
45
+ let params = a.params(roleId)
46
+ return a.levels(route, params)
47
+ }
48
48
 
49
49
  a.levels = (route, params) => {
50
- let obj = {};
51
- if (a.routes.indexOf(route) > -1) {
52
- for (let i = 0; i < a.actions.length; i++) {
53
- if (params.hasOwnProperty(route)) {
54
- if (params[route].indexOf(a.actions[i]) > -1) {
55
- obj[a.actions[i]] = true;
56
- } else {
57
- obj[a.actions[i]] = false;
58
- }
59
- } else {
60
- obj[a.actions[i]] = false;
61
- }
62
- }
63
- } else {
64
- for (let i = 0; i < a.actions.length; i++) {
65
- obj[a.actions[i]] = true;
50
+ let obj = {}
51
+ if (a.routes.indexOf(route) > -1) {
52
+ for (let i = 0; i < a.actions.length; i++) {
53
+ if (params.hasOwnProperty(route)) {
54
+ if (params[route].indexOf(a.actions[i]) > -1) {
55
+ obj[a.actions[i]] = true
56
+ } else {
57
+ obj[a.actions[i]] = false
66
58
  }
59
+ } else {
60
+ obj[a.actions[i]] = false
61
+ }
62
+ }
63
+ } else {
64
+ for (let i = 0; i < a.actions.length; i++) {
65
+ obj[a.actions[i]] = true
67
66
  }
68
- return obj;
69
- };
67
+ }
68
+ return obj
69
+ }
70
70
 
71
71
  a.myLevel = (req, res, table) => {
72
- const levels = a.levels(table, a.routes.includes(table) ? a.rules(res.locals.roleId) : {});
73
- return levels;
72
+ const levels = a.levels(table, a.routes.includes(table) ? a.rules(res.locals.roleId) : {})
73
+ return levels
74
74
  }
75
75
 
76
76
  a.menuAccess = (res, menu) => {
77
- if(Array.isArray(menu)) {
78
- let isTrue = false;
79
- for(let i = 0; i < menu.length; i++) {
80
- let r = a.menuAccess(res,menu[i]);
81
- if(r == true){
82
- return true;
83
- }
84
- }
77
+ if (Array.isArray(menu)) {
78
+ let isTrue = false
79
+ for (let i = 0; i < menu.length; i++) {
80
+ let r = a.menuAccess(res, menu[i])
81
+ if (r == true) {
82
+ return true
83
+ }
84
+ }
85
+ } else {
86
+ if (Util.in_array(menu, a.routes)) {
87
+ let params = a.params(res.locals.roleId)
88
+ let arr = Object.keys(params) || []
89
+ if (Util.in_array(menu, arr)) {
90
+ return true
91
+ } else {
92
+ return false
93
+ }
85
94
  } else {
86
- if(Util.in_array(menu, a.routes)){
87
- let params = a.params(res.locals.roleId);
88
- let arr = Object.keys(params) || [];
89
- if(Util.in_array(menu, arr)){
90
- return true;
91
- } else {
92
- return false;
93
- }
94
- } else {
95
- return true;
96
- }
95
+ return true
97
96
  }
98
- return false;
99
- };
97
+ }
98
+ return false
99
+ }
100
100
 
101
101
  a.isAccess = (roleId, route, action) => {
102
- let params = a.params(roleId);
103
- if(a.routes.includes(route)) {
104
- if(!params[route]){
105
- return false;
106
- }
107
- if(a.actions.includes(action)){
108
- if(params[route].includes(action)){
109
- return true;
110
- } else {
111
- return false;
112
- }
113
- } else {
114
- return true;
115
- }
116
- return false;
102
+ let params = a.params(roleId)
103
+ if (a.routes.includes(route)) {
104
+ if (!params[route]) {
105
+ return false
117
106
  }
118
- return true;
119
- };
107
+ if (a.actions.includes(action)) {
108
+ if (params[route].includes(action)) {
109
+ return true
110
+ } else {
111
+ return false
112
+ }
113
+ } else {
114
+ return true
115
+ }
116
+ return false
117
+ }
118
+ return true
119
+ }
120
120
 
121
121
  //get access page after login
122
122
  a.access = (req, res, next) => {
123
- if (req.session.user === null || typeof req.session.user === 'undefined') {
124
- req.session.sessionFlash = Util.flashError(LANGUAGE.login_first);
125
- res.redirect(`${process.env.APP_AFTER_LOGOUT}`);
123
+ if (req.session.user === null || typeof req.session.user === 'undefined') {
124
+ req.session.sessionFlash = Util.flashError(LANGUAGE.login_first)
125
+ res.redirect(`${process.env.APP_AFTER_LOGOUT}`)
126
+ } else {
127
+ const isAccess = a.isAccess(res.locals.roleId, req.route, req.action)
128
+ if (isAccess) {
129
+ next()
126
130
  } else {
127
- const isAccess = a.isAccess(res.locals.roleId, req.route, req.action);
128
- if (isAccess) {
129
- next();
130
- } else {
131
- if(a.isAccess(res.locals.roleId,'zrole','index')) {
132
- req.session.sessionFlash = Util.flashError(LANGUAGE.no_access);
133
- res.redirect(`${process.env.APP_AFTER_LOGIN}?setup=role`)
134
- } else {
135
- res.redirect(`${process.env.APP_AFTER_LOGIN}`)
136
- }
137
- }
131
+ if (a.isAccess(res.locals.roleId, 'zrole', 'index')) {
132
+ req.session.sessionFlash = Util.flashError(LANGUAGE.no_access)
133
+ res.redirect(`${process.env.APP_AFTER_LOGIN}?setup=role`)
134
+ } else {
135
+ res.redirect(`${process.env.APP_AFTER_LOGIN}`)
136
+ }
138
137
  }
139
- };
138
+ }
139
+ }
140
140
 
141
141
  a.menu = (req, res) => {
142
- let jsonArray = [];
143
- if (!res.locals.isLogin) return jsonArray;
144
- let companyId = res.locals.companyId;
145
- let userId = res.locals.userId;
146
- let jsonMenu = myCache.get("MENU");
147
- let arr = [];
148
- if (jsonMenu && jsonMenu.hasOwnProperty(companyId)) {
149
- arr = jsonMenu[companyId] || [];
150
- }
151
- arr.map((me) => {
152
- if (a.menuAccess(res, me.href)) {
153
- let obj = a.addItemMenu(me);
154
- if (me.hasOwnProperty("children")) {
155
- obj.children = a.childrenMenu(res, me.children);
156
- if(obj.children.length) {
157
- jsonArray.push(obj);
158
- }
159
- } else {
160
- jsonArray.push(obj);
161
- }
142
+ let jsonArray = []
143
+ if (!res.locals.isLogin) return jsonArray
144
+ let companyId = res.locals.companyId
145
+ let userId = res.locals.userId
146
+ let jsonMenu = myCache.get('MENU')
147
+ let arr = []
148
+ if (jsonMenu && jsonMenu.hasOwnProperty(companyId)) {
149
+ arr = jsonMenu[companyId] || []
150
+ }
151
+ //console.log(JSON.stringify(arr))
152
+ let count = arr.length
153
+ arr.map((me) => {
154
+ if (a.menuAccess(res, me.href)) {
155
+ let obj = a.addItemMenu(me)
156
+ //console.log(obj)
157
+ if (me.hasOwnProperty('children')) {
158
+ obj.children = a.childrenMenu(res, me.children)
159
+ if (obj.children.length) {
160
+ jsonArray.push(obj)
162
161
  }
163
- });
164
-
165
- return jsonArray;
166
- };
167
-
168
- a.menuSystems = (req,res) => {
169
- let arr = [];
170
- let menus = myCache.get("MENU_SYSTEMS");
171
- let children = [];
172
- menus["users"].forEach(function (item) {
173
- if (a.menuAccess(res, item.href)) {
174
- children.push(item);
175
- }
176
- });
177
- if(children.length == 0) {
178
- delete menus.users;
179
- } else {
180
- let userManagament = {
181
- text: "LANGUAGE.users",
182
- icon: "tabler-users-plus",
183
- children: children
184
- };
185
- arr.push(userManagament);
162
+ } else {
163
+ jsonArray.push(obj)
164
+ }
186
165
  }
187
- children = [];
188
- menus["systems"].forEach(function (item) {
189
- if (a.menuAccess(res, item.href)) {
190
- children.push(item);
191
- }
192
- });
193
- if(children.length == 0) {
194
- delete menus.systems;
195
- } else {
196
- let settings = {
197
- text: "LANGUAGE.systems",
198
- icon: "tabler-settings-check",
199
- children: children
200
- };
201
- arr.push(settings);
166
+ })
167
+ //console.log(JSON.stringify(jsonArray))
168
+ return jsonArray
169
+ }
170
+
171
+ a.menuSystems = (req, res) => {
172
+ let arr = []
173
+ let menus = myCache.get('MENU_SYSTEMS')
174
+ let children = []
175
+ menus['users'].forEach(function (item) {
176
+ if (a.menuAccess(res, item.href)) {
177
+ children.push(item)
178
+ }
179
+ })
180
+ if (children.length == 0) {
181
+ delete menus.users
182
+ } else {
183
+ let userManagament = {
184
+ text: 'LANGUAGE.users',
185
+ icon: 'tabler-users-plus',
186
+ children: children,
187
+ }
188
+ arr.push(userManagament)
189
+ }
190
+ children = []
191
+ menus['systems'].forEach(function (item) {
192
+ if (a.menuAccess(res, item.href)) {
193
+ children.push(item)
202
194
  }
203
- return arr;
204
- };
195
+ })
196
+ if (children.length == 0) {
197
+ delete menus.systems
198
+ } else {
199
+ let settings = {
200
+ text: 'LANGUAGE.systems',
201
+ icon: 'tabler-settings-check',
202
+ children: children,
203
+ }
204
+ arr.push(settings)
205
+ }
206
+ return arr
207
+ }
205
208
 
206
209
  a.menus = (req, res) => {
207
- let arr = a.menu(req, res);
208
- return [...arr, ...a.menuSystems(req, res)];
209
- };
210
+ let arr = a.menu(req, res)
211
+ let menus = [...arr, ...a.menuSystems(req, res)]
212
+ return menus
213
+ }
210
214
 
211
215
  a.addItemMenu = (obj) => {
212
- let newObj = {};
213
- for (const key in obj) {
214
- if (key != "children") {
215
- newObj[key] = obj[key];
216
- }
216
+ let newObj = {}
217
+ for (const key in obj) {
218
+ if (key != 'children') {
219
+ newObj[key] = obj[key]
217
220
  }
218
- return newObj;
219
- };
221
+ }
222
+ return newObj
223
+ }
220
224
 
221
225
  a.childrenMenu = (res, arr) => {
222
- let myArr = [];
223
- let nArr = arr.reduce((result, item) => [...result, item.href],[]);
224
- let isAccess = a.menuAccess(res, nArr);
225
- if (isAccess) {
226
- //stupid way
227
- arr.map((item) => {
228
- let obj = {};
229
- if(a.isAccess(res.locals.roleId,item.href,"index")) {
230
- obj = a.addItemMenu(item);
231
- if (item.hasOwnProperty("children") && item.children.length) {
232
- let child = [];
233
- child.push(a.childrenMenu(res, item.children));
234
- if (child[0]) {
235
- obj.children = child[0];
236
- }
237
- }
238
- myArr.push(obj)
239
- }
240
- });
241
- }
242
- return myArr;
243
- };
226
+ let myArr = []
227
+ let nArr = arr.reduce((result, item) => [...result, item.href], [])
228
+ let isAccess = a.menuAccess(res, nArr)
229
+ if (isAccess) {
230
+ //stupid way
231
+ arr.map((item) => {
232
+ let obj = {}
233
+ if (a.isAccess(res.locals.roleId, item.href, 'index')) {
234
+ obj = a.addItemMenu(item)
235
+ if (item.hasOwnProperty('children') && item.children.length) {
236
+ let child = []
237
+ child.push(a.childrenMenu(res, item.children))
238
+ //console.log('child',child)
239
+ if (child[0]) {
240
+ obj.children = child[0]
241
+ } else {
242
+ delete obj
243
+ }
244
+ }
245
+ if (obj.hasOwnProperty('children') && obj.children.length == 0) {
246
+ } else {
247
+ myArr.push(obj)
248
+ }
249
+ //console.log('OBJ ===== ', obj)
250
+ }
251
+ })
252
+ }
253
+ return myArr
254
+ }
244
255
 
245
- module.exports = a;
256
+ module.exports = a
package/lib/zRoute.js CHANGED
@@ -3482,7 +3482,7 @@ zRoute.tabAccess = async (req, res) => {
3482
3482
  let table = req.body.table
3483
3483
  let roles = myCache.get('ROLES')
3484
3484
  let roleId = res.locals.roleId
3485
- let tabs = roles[roleId] && roles.tabs ? roles[roleId].tabs[table] : []
3485
+ let tabs = roles[roleId] && roles[roleId].tabs ? roles[roleId].tabs[table] : []
3486
3486
  res.json(tabs)
3487
3487
  } catch (e) {
3488
3488
  console.log(e)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.2.15",
3
+ "version": "1.2.17",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"