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.
- package/lib/zRole.js +202 -191
- package/lib/zRoute.js +1 -1
- package/package.json +1 -1
package/lib/zRole.js
CHANGED
|
@@ -1,245 +1,256 @@
|
|
|
1
|
-
const Util = require('./Util')
|
|
2
|
-
const fs = require(
|
|
3
|
-
const myCache = require(
|
|
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(
|
|
14
|
-
const cacheRoles = myCache.get(
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
42
|
-
}
|
|
41
|
+
return a.params(roleId)
|
|
42
|
+
}
|
|
43
43
|
|
|
44
|
-
a.list =
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
69
|
-
|
|
67
|
+
}
|
|
68
|
+
return obj
|
|
69
|
+
}
|
|
70
70
|
|
|
71
71
|
a.myLevel = (req, res, table) => {
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
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
|
-
|
|
99
|
-
|
|
97
|
+
}
|
|
98
|
+
return false
|
|
99
|
+
}
|
|
100
100
|
|
|
101
101
|
a.isAccess = (roleId, route, action) => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
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
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
|
|
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
|
-
|
|
208
|
-
|
|
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
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
216
|
+
let newObj = {}
|
|
217
|
+
for (const key in obj) {
|
|
218
|
+
if (key != 'children') {
|
|
219
|
+
newObj[key] = obj[key]
|
|
217
220
|
}
|
|
218
|
-
|
|
219
|
-
|
|
221
|
+
}
|
|
222
|
+
return newObj
|
|
223
|
+
}
|
|
220
224
|
|
|
221
225
|
a.childrenMenu = (res, arr) => {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
|
|
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)
|