w-web-perm 1.0.12 → 1.0.13
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/.vscode/launch.json +0 -1
- package/README.md +0 -1
- package/dist/css/app.f22995d1.css +1 -0
- package/dist/index.tmp +1 -1
- package/dist/js/app-legacy.82274c39.js +2 -0
- package/dist/js/app-legacy.82274c39.js.map +1 -0
- package/dist/js/app.82274c39.js +2 -0
- package/dist/js/app.82274c39.js.map +1 -0
- package/dist/js/chunk-vendors-legacy.d89048a8.js +13 -0
- package/dist/js/chunk-vendors-legacy.d89048a8.js.map +1 -0
- package/dist/js/chunk-vendors.d89048a8.js +13 -0
- package/dist/js/chunk-vendors.d89048a8.js.map +1 -0
- package/dist/w-web-perm.umd.js +2 -2
- package/dist/w-web-perm.umd.js.map +1 -1
- package/docs/WWebPerm.html +2 -2
- package/docs/WWebPerm.mjs.html +212 -64
- package/docs/index.html +1 -1
- package/g.backupDb.mjs +1 -1
- package/g.initialData.mjs +211 -111
- package/g.initialTestData.mjs +2 -1
- package/g.mjs +0 -0
- package/g.provideGrups.mjs +87 -0
- package/g.providePemis.mjs +43 -0
- package/g.provideTargets.mjs +20 -13
- package/g.provideUsers.mjs +45 -13
- package/package.json +8 -8
- package/script.txt +5 -5
- package/server/WWebPerm.mjs +211 -63
- package/server/provideGrups.mjs +64 -0
- package/server/{provideRuleGroups.mjs → providePemis.mjs} +14 -15
- package/server/provideTargets.mjs +8 -5
- package/server/provideUsers.mjs +9 -9
- package/src/App.vue +16 -3
- package/src/components/Layout.vue +13 -5
- package/src/components/LayoutContent.vue +31 -16
- package/src/components/LayoutContentGrups.vue +793 -0
- package/src/components/LayoutContentPemis.vue +793 -0
- package/src/components/LayoutContentTargets.vue +481 -307
- package/src/components/LayoutContentUsers.vue +796 -291
- package/src/components/VeCgrups.vue +926 -0
- package/src/components/VeCpemis.vue +926 -0
- package/src/components/VeCrules.vue +820 -0
- package/src/main.js +2 -2
- package/src/perm.mjs +5 -5
- package/src/plugins/mShare.mjs +444 -153
- package/src/plugins/mUI.mjs +37 -19
- package/src/schema/gi.mjs +1 -1
- package/src/schema/index.mjs +4 -2
- package/src/schema/tables/grups.mjs +154 -0
- package/src/schema/tables/{ruleGroups.mjs → pemis.mjs} +27 -16
- package/src/schema/tables/targets.mjs +49 -16
- package/src/schema/tables/users.mjs +55 -27
- package/src/store/mutations.mjs +375 -150
- package/srv.mjs +2 -2
- package/tableTags-web-perm.json +1 -1
- package/dist/css/app.f6c50bec.css +0 -1
- package/dist/js/app-legacy.767522f1.js +0 -2
- package/dist/js/app-legacy.767522f1.js.map +0 -1
- package/dist/js/app.767522f1.js +0 -2
- package/dist/js/app.767522f1.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.b0d63e17.js +0 -13
- package/dist/js/chunk-vendors-legacy.b0d63e17.js.map +0 -1
- package/dist/js/chunk-vendors.b0d63e17.js +0 -13
- package/dist/js/chunk-vendors.b0d63e17.js.map +0 -1
- package/g.provideRuleGroups.mjs +0 -56
- package/src/components/LayoutContentGroups.vue +0 -671
- package/src/components/VeUser.vue +0 -446
- package/src/components/ruleGroup.vue +0 -645
package/src/plugins/mUI.mjs
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import Vue from 'vue'
|
|
2
|
-
import min from 'lodash-es/min.js'
|
|
3
|
-
import size from 'lodash-es/size.js'
|
|
4
|
-
import take from 'lodash-es/take.js'
|
|
5
|
-
import isEqual from 'lodash-es/isEqual.js'
|
|
6
|
-
import uniq from 'lodash-es/uniq.js'
|
|
7
|
-
import set from 'lodash-es/set.js'
|
|
8
|
-
import get from 'lodash-es/get.js'
|
|
9
|
-
import each from 'lodash-es/each.js'
|
|
10
|
-
import map from 'lodash-es/map.js'
|
|
11
|
-
import filter from 'lodash-es/filter.js'
|
|
12
|
-
import last from 'lodash-es/last.js'
|
|
13
|
-
import split from 'lodash-es/split.js'
|
|
14
|
-
import join from 'lodash-es/join.js'
|
|
15
|
-
import drop from 'lodash-es/drop.js'
|
|
16
|
-
import dropRight from 'lodash-es/dropRight.js'
|
|
17
|
-
import groupBy from 'lodash-es/groupBy.js'
|
|
18
|
-
import sortBy from 'lodash-es/sortBy.js'
|
|
19
|
-
import cloneDeep from 'lodash-es/cloneDeep.js'
|
|
2
|
+
import min from 'lodash-es/min.js'
|
|
3
|
+
import size from 'lodash-es/size.js'
|
|
4
|
+
import take from 'lodash-es/take.js'
|
|
5
|
+
import isEqual from 'lodash-es/isEqual.js'
|
|
6
|
+
import uniq from 'lodash-es/uniq.js'
|
|
7
|
+
import set from 'lodash-es/set.js'
|
|
8
|
+
import get from 'lodash-es/get.js'
|
|
9
|
+
import each from 'lodash-es/each.js'
|
|
10
|
+
import map from 'lodash-es/map.js'
|
|
11
|
+
import filter from 'lodash-es/filter.js'
|
|
12
|
+
import last from 'lodash-es/last.js'
|
|
13
|
+
import split from 'lodash-es/split.js'
|
|
14
|
+
import join from 'lodash-es/join.js'
|
|
15
|
+
import drop from 'lodash-es/drop.js'
|
|
16
|
+
import dropRight from 'lodash-es/dropRight.js'
|
|
17
|
+
import groupBy from 'lodash-es/groupBy.js'
|
|
18
|
+
import sortBy from 'lodash-es/sortBy.js'
|
|
19
|
+
import cloneDeep from 'lodash-es/cloneDeep.js'
|
|
20
20
|
import cint from 'wsemi/src/cint.mjs'
|
|
21
21
|
import delay from 'wsemi/src/delay.mjs'
|
|
22
22
|
import isarr from 'wsemi/src/isarr.mjs'
|
|
@@ -149,7 +149,11 @@ function getKpLang() {
|
|
|
149
149
|
function getKpText(key) {
|
|
150
150
|
// console.log('call getKpText')
|
|
151
151
|
let kpText = get(vo, '$store.state.kpText')
|
|
152
|
-
|
|
152
|
+
let t = get(kpText, key, '')
|
|
153
|
+
if (!isestr(t)) {
|
|
154
|
+
t = key
|
|
155
|
+
}
|
|
156
|
+
return t
|
|
153
157
|
}
|
|
154
158
|
|
|
155
159
|
|
|
@@ -203,6 +207,18 @@ async function waitData(t = 0) {
|
|
|
203
207
|
}
|
|
204
208
|
|
|
205
209
|
|
|
210
|
+
let kpIcon = {
|
|
211
|
+
warning: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAhCAYAAACxzQkrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOS8xOS8yNP52YhIAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAADMklEQVRYha2WTWgTQRiGn0k2SU2KNQjmoiL+gGAVD/5gEelAkSKOiILei+hBRAQv/tBDsQiK1CJFDz331tNePAjRm60eBL0pXsSDF+dimmzbZDzsRJNmm+xPXliyOzP7zrNfvpn5hDGGJNJSHQJmAQHcLpbdL0n8RBIgLdVhYBHYb5u+AZeLZfdzXM9UbBpfC8AB/OgIe7+QxDA2kJZqAhgO6Bq2fbEU6y/TUuWB70BpkyG/gL3FsrsS1TtuhO53gcH23Y9jHDlCWqqd+Mmb6zHUA/YVy+7PKP5xIvQkBAx2zNOo5pEipKU6Bnzo6Kg3/N904PcdL5bdj2HniBqh2bYnITDVGmQcyDj+vRDd3+kXkJbqEjDS2mYqK2THTjO0MMfQwhzZsdOYSsfCGrHv9g9IS+UAz9oajUFkHPITV0mVSqRKJfITVxAZBzrT4Jn16A8QcBvY0w4EZDL+/mw8/xIpv60zLfdYj+RAWqrtwGRgpzHQaJm90QiKTlOT1isZEPAI2BpiXC9ttV5d1RVIS3UQuN4HmKZuWM94QMBMiDFRJKznptp0Mi3VGDDeR5imxq13eCB95iz0+JKEmtFj58IDkc5dI7jWaZcQ7cdFOhW0UwdpmHr6WiggLVUBmO4NA6bmYSpVEIMgBjGVKqbm+ZnSW9N2ru5AwANgR28gf9bKzDxry+9ZW35PZWa+ra+Hdti52m1bT3st1S7gK+HKi/+Ha73uP6fTiC0D3TbHjfKAA8Wy+6PZsDFCT0PDAGAQ2Qys12G97t8HnBtd1FEz/YuQluoEsBTFjXoDnDQ5u4o9940PF1wXddPJYtldBmg9gZ9HdTG1GoMPb5G9cBEAZ+9u/ky/QBTyUa2eY0ubFICWSgGnotEYxEAO59gRoAJUcI4fQQzkouRQU6csAykt1TZgKqqDn9Aeq6/fAQWgwOrrt5iqF3aVbdSUlmpI/B49vwiErujaZAxmbZ3syaMArC598gu0eEAAi+L36PkakVZWANRKFQCR35IEBqCaAl4mcUAIRCHvJ3IyGIBXjhHcEYYGcJMkkUomD5gziLut+9Bj4DKQJeLulkACWAUWi2X3HsBfLU4ARuGaUEMAAAAASUVORK5CYII=`,
|
|
212
|
+
}
|
|
213
|
+
function getIcon(icon) {
|
|
214
|
+
let c = get(kpIcon, icon, '')
|
|
215
|
+
if (!isestr(c)) {
|
|
216
|
+
console.log(`invalid icon[${icon}]`)
|
|
217
|
+
}
|
|
218
|
+
return c
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
|
|
206
222
|
let mUI = {
|
|
207
223
|
|
|
208
224
|
setVo,
|
|
@@ -223,6 +239,8 @@ let mUI = {
|
|
|
223
239
|
|
|
224
240
|
waitData,
|
|
225
241
|
|
|
242
|
+
getIcon,
|
|
243
|
+
|
|
226
244
|
}
|
|
227
245
|
|
|
228
246
|
|
package/src/schema/gi.mjs
CHANGED
package/src/schema/index.mjs
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import grups from './tables/grups.mjs'
|
|
2
|
+
import pemis from './tables/pemis.mjs'
|
|
2
3
|
import targets from './tables/targets.mjs'
|
|
3
4
|
import users from './tables/users.mjs'
|
|
4
5
|
import build from 'w-data-collector/src/build.mjs'
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
let cs = {
|
|
8
|
-
|
|
9
|
+
grups,
|
|
10
|
+
pemis,
|
|
9
11
|
targets,
|
|
10
12
|
users,
|
|
11
13
|
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import map from 'lodash-es/map.js'
|
|
2
|
+
import keys from 'lodash-es/keys.js'
|
|
3
|
+
import genID from 'wsemi/src/genID.mjs'
|
|
4
|
+
import dtmapping from 'wsemi/src/dtmapping.mjs'
|
|
5
|
+
import dtpick from 'wsemi/src/dtpick.mjs'
|
|
6
|
+
import nowms2str from 'wsemi/src/nowms2str.mjs'
|
|
7
|
+
import now2strp from 'wsemi/src/now2strp.mjs'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
let keyTable = 'grups'
|
|
11
|
+
let tableNameCht = '權限群組設定'
|
|
12
|
+
let tableNameEng = 'Permissions groups'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
let settings = {
|
|
16
|
+
id: {
|
|
17
|
+
pk: true,
|
|
18
|
+
name: '主鍵',
|
|
19
|
+
type: 'STRING',
|
|
20
|
+
},
|
|
21
|
+
order: {
|
|
22
|
+
name: '順序',
|
|
23
|
+
type: 'INTEGER',
|
|
24
|
+
},
|
|
25
|
+
name: {
|
|
26
|
+
name: '名稱',
|
|
27
|
+
type: 'STRING',
|
|
28
|
+
},
|
|
29
|
+
description: {
|
|
30
|
+
name: '說明',
|
|
31
|
+
type: 'TEXT',
|
|
32
|
+
},
|
|
33
|
+
from: {
|
|
34
|
+
name: '來源', //供外部批次變更使用
|
|
35
|
+
type: 'STRING',
|
|
36
|
+
},
|
|
37
|
+
cpemis: {
|
|
38
|
+
name: '權限清單', //為json字串
|
|
39
|
+
type: 'TEXT',
|
|
40
|
+
},
|
|
41
|
+
userId: {
|
|
42
|
+
name: '創建使用者主鍵',
|
|
43
|
+
type: 'STRING',
|
|
44
|
+
},
|
|
45
|
+
timeCreate: {
|
|
46
|
+
name: '創建時間',
|
|
47
|
+
type: 'STRING',
|
|
48
|
+
},
|
|
49
|
+
userIdUpdate: {
|
|
50
|
+
name: '最新變更使用者主鍵',
|
|
51
|
+
type: 'STRING',
|
|
52
|
+
},
|
|
53
|
+
timeUpdate: {
|
|
54
|
+
name: '更新時間',
|
|
55
|
+
type: 'STRING',
|
|
56
|
+
},
|
|
57
|
+
// isActive: {
|
|
58
|
+
// name: '是否有效',
|
|
59
|
+
// type: 'STRING',
|
|
60
|
+
// },
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
let funNew = (ndata = {}) => {
|
|
64
|
+
let o = dtmapping(ndata, keys(settings))
|
|
65
|
+
o.id = `${now2strp()}-${genID()}`
|
|
66
|
+
o.userIdUpdate = o.userId
|
|
67
|
+
o.timeCreate = nowms2str()
|
|
68
|
+
o.userIdUpdate = o.userId
|
|
69
|
+
o.timeUpdate = o.timeCreate
|
|
70
|
+
// o.isActive = 'y'
|
|
71
|
+
return o
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
let funTest = () => {
|
|
75
|
+
let rs = [
|
|
76
|
+
|
|
77
|
+
['權限群組M1', `
|
|
78
|
+
{
|
|
79
|
+
'權限P1': {
|
|
80
|
+
'mode': 'OR',
|
|
81
|
+
'isActive': 'y',
|
|
82
|
+
},
|
|
83
|
+
'權限P2': {
|
|
84
|
+
'mode': 'OR',
|
|
85
|
+
'isActive': 'y',
|
|
86
|
+
},
|
|
87
|
+
}
|
|
88
|
+
`],
|
|
89
|
+
['權限群組M2', `
|
|
90
|
+
{
|
|
91
|
+
'權限P2': {
|
|
92
|
+
'mode': 'OR',
|
|
93
|
+
'isActive': 'y',
|
|
94
|
+
},
|
|
95
|
+
'權限P3': {
|
|
96
|
+
'mode': 'OR',
|
|
97
|
+
'isActive': 'y',
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
`],
|
|
101
|
+
['權限群組M3', `
|
|
102
|
+
{
|
|
103
|
+
'權限P2': {
|
|
104
|
+
'mode': 'OR',
|
|
105
|
+
'isActive': 'y',
|
|
106
|
+
},
|
|
107
|
+
'權限P3': {
|
|
108
|
+
'mode': 'AND',
|
|
109
|
+
'isActive': 'y',
|
|
110
|
+
},
|
|
111
|
+
}
|
|
112
|
+
`],
|
|
113
|
+
['權限群組M4', `
|
|
114
|
+
{
|
|
115
|
+
'權限P3': {
|
|
116
|
+
'mode': 'OR',
|
|
117
|
+
'isActive': 'y',
|
|
118
|
+
},
|
|
119
|
+
'權限P4': {
|
|
120
|
+
'mode': 'OR',
|
|
121
|
+
'isActive': 'y',
|
|
122
|
+
},
|
|
123
|
+
}
|
|
124
|
+
`],
|
|
125
|
+
|
|
126
|
+
]
|
|
127
|
+
rs = map(rs, ([name, cpemis], k) => {
|
|
128
|
+
let v = funNew({
|
|
129
|
+
userId: 'id-for-admin',
|
|
130
|
+
order: k,
|
|
131
|
+
name,
|
|
132
|
+
description: `${name}的說明`,
|
|
133
|
+
cpemis,
|
|
134
|
+
})
|
|
135
|
+
v.id = `id-for-${name}`
|
|
136
|
+
v = dtpick(v, keys(settings))
|
|
137
|
+
return v
|
|
138
|
+
})
|
|
139
|
+
console.log(`已產生: ${keyTable} 測試資料`, rs)
|
|
140
|
+
return rs
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
let tab = {
|
|
144
|
+
keyTable,
|
|
145
|
+
tableNameCht,
|
|
146
|
+
tableNameEng,
|
|
147
|
+
settings,
|
|
148
|
+
funNew,
|
|
149
|
+
funTest,
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
export default tab
|
|
154
|
+
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import map from 'lodash-es/map.js'
|
|
2
|
-
import keys from 'lodash-es/keys.js'
|
|
1
|
+
import map from 'lodash-es/map.js'
|
|
2
|
+
import keys from 'lodash-es/keys.js'
|
|
3
3
|
import genID from 'wsemi/src/genID.mjs'
|
|
4
4
|
import dtmapping from 'wsemi/src/dtmapping.mjs'
|
|
5
5
|
import dtpick from 'wsemi/src/dtpick.mjs'
|
|
@@ -7,9 +7,9 @@ import nowms2str from 'wsemi/src/nowms2str.mjs'
|
|
|
7
7
|
import now2strp from 'wsemi/src/now2strp.mjs'
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
let keyTable = '
|
|
11
|
-
let tableNameCht = '
|
|
12
|
-
let tableNameEng = '
|
|
10
|
+
let keyTable = 'pemis'
|
|
11
|
+
let tableNameCht = '權限設定'
|
|
12
|
+
let tableNameEng = 'Permissions'
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
let settings = {
|
|
@@ -31,11 +31,11 @@ let settings = {
|
|
|
31
31
|
type: 'TEXT',
|
|
32
32
|
},
|
|
33
33
|
from: {
|
|
34
|
-
name: '來源',
|
|
34
|
+
name: '來源', //供外部批次變更使用
|
|
35
35
|
type: 'STRING',
|
|
36
36
|
},
|
|
37
37
|
crules: {
|
|
38
|
-
name: '
|
|
38
|
+
name: '管控對象規則清單', //為json字串
|
|
39
39
|
type: 'TEXT',
|
|
40
40
|
},
|
|
41
41
|
userId: {
|
|
@@ -54,6 +54,10 @@ let settings = {
|
|
|
54
54
|
name: '更新時間',
|
|
55
55
|
type: 'STRING',
|
|
56
56
|
},
|
|
57
|
+
// isActive: {
|
|
58
|
+
// name: '是否有效',
|
|
59
|
+
// type: 'STRING',
|
|
60
|
+
// },
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
let funNew = (ndata = {}) => {
|
|
@@ -61,6 +65,7 @@ let funNew = (ndata = {}) => {
|
|
|
61
65
|
o.id = `${now2strp()}-${genID()}`
|
|
62
66
|
o.userIdUpdate = o.userId
|
|
63
67
|
o.timeCreate = nowms2str()
|
|
68
|
+
o.userIdUpdate = o.userId
|
|
64
69
|
o.timeUpdate = o.timeCreate
|
|
65
70
|
// o.isActive = 'y'
|
|
66
71
|
return o
|
|
@@ -68,16 +73,22 @@ let funNew = (ndata = {}) => {
|
|
|
68
73
|
|
|
69
74
|
let funTest = () => {
|
|
70
75
|
let rs = [
|
|
71
|
-
|
|
72
|
-
['
|
|
73
|
-
['
|
|
76
|
+
|
|
77
|
+
['權限P1', `{ "專案A/頁A/區塊A": 'y', "專案A/頁B/區塊A": 'n', "專案A/頁C": 'n' }`],
|
|
78
|
+
['權限P2', `{ "專案A/頁C": 'y', "專案B/頁A/區塊A": 'y', "專案B/頁A/區塊B": 'y' }`],
|
|
79
|
+
['權限P3', `{ "專案A/頁C": 'y', "專案B/頁A/區塊A": 'n', "專案B/頁A/區塊B": 'y', "專案B/頁A/區塊C": 'y' }`],
|
|
80
|
+
['權限P4', `{ "專案B/頁B/區塊A/待辦事項清單": 'y', "專案B/頁B/區塊B/顯示後台按鈕": 'n' }`],
|
|
81
|
+
|
|
74
82
|
]
|
|
75
|
-
rs = map(rs, ([
|
|
76
|
-
let v = funNew({
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
rs = map(rs, ([name, crules], k) => {
|
|
84
|
+
let v = funNew({
|
|
85
|
+
userId: 'id-for-admin',
|
|
86
|
+
order: k,
|
|
87
|
+
name,
|
|
88
|
+
description: `${name}的說明`,
|
|
89
|
+
crules,
|
|
90
|
+
})
|
|
91
|
+
v.id = `id-for-${name}`
|
|
81
92
|
v = dtpick(v, keys(settings))
|
|
82
93
|
return v
|
|
83
94
|
})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import map from 'lodash-es/map.js'
|
|
2
|
-
import keys from 'lodash-es/keys.js'
|
|
1
|
+
import map from 'lodash-es/map.js'
|
|
2
|
+
import keys from 'lodash-es/keys.js'
|
|
3
3
|
import genID from 'wsemi/src/genID.mjs'
|
|
4
4
|
import dtmapping from 'wsemi/src/dtmapping.mjs'
|
|
5
5
|
import dtpick from 'wsemi/src/dtpick.mjs'
|
|
6
|
-
|
|
6
|
+
import nowms2str from 'wsemi/src/nowms2str.mjs'
|
|
7
7
|
import now2strp from 'wsemi/src/now2strp.mjs'
|
|
8
8
|
|
|
9
9
|
|
|
@@ -27,48 +27,81 @@ let settings = {
|
|
|
27
27
|
type: 'TEXT',
|
|
28
28
|
},
|
|
29
29
|
from: {
|
|
30
|
-
name: '來源',
|
|
30
|
+
name: '來源', //供外部批次變更使用
|
|
31
31
|
type: 'STRING',
|
|
32
32
|
},
|
|
33
|
+
userId: {
|
|
34
|
+
name: '創建使用者主鍵',
|
|
35
|
+
type: 'STRING',
|
|
36
|
+
},
|
|
37
|
+
timeCreate: {
|
|
38
|
+
name: '創建時間',
|
|
39
|
+
type: 'STRING',
|
|
40
|
+
},
|
|
41
|
+
userIdUpdate: {
|
|
42
|
+
name: '最新變更使用者主鍵',
|
|
43
|
+
type: 'STRING',
|
|
44
|
+
},
|
|
45
|
+
timeUpdate: {
|
|
46
|
+
name: '更新時間',
|
|
47
|
+
type: 'STRING',
|
|
48
|
+
},
|
|
49
|
+
// isActive: {
|
|
50
|
+
// name: '是否有效',
|
|
51
|
+
// type: 'STRING',
|
|
52
|
+
// },
|
|
33
53
|
}
|
|
34
54
|
|
|
35
55
|
let funNew = (ndata = {}) => {
|
|
36
56
|
let o = dtmapping(ndata, keys(settings))
|
|
37
57
|
o.id = `${now2strp()}-${genID()}`
|
|
38
|
-
|
|
39
|
-
|
|
58
|
+
o.userIdUpdate = o.userId
|
|
59
|
+
o.timeCreate = nowms2str()
|
|
60
|
+
o.userIdUpdate = o.userId
|
|
61
|
+
o.timeUpdate = o.timeCreate
|
|
40
62
|
// o.isActive = 'y'
|
|
41
63
|
return o
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
let funTest = () => {
|
|
45
67
|
let rs = [
|
|
46
|
-
|
|
47
|
-
'專案A/頁A',
|
|
68
|
+
|
|
48
69
|
'專案A/頁A/區塊A',
|
|
49
70
|
'專案A/頁A/區塊A/執行按鈕',
|
|
50
71
|
'專案A/頁A/區塊A/分析按鈕',
|
|
51
|
-
|
|
72
|
+
|
|
52
73
|
'專案A/頁B/區塊A',
|
|
53
74
|
'專案A/頁B/區塊A/執行按鈕',
|
|
54
75
|
'專案A/頁B/區塊A/分析按鈕',
|
|
55
|
-
|
|
76
|
+
|
|
56
77
|
'專案A/頁B/區塊B/展開按鈕',
|
|
57
78
|
'專案A/頁B/區塊B/下載按鈕',
|
|
58
|
-
|
|
59
|
-
'專案
|
|
79
|
+
|
|
80
|
+
'專案A/頁C',
|
|
81
|
+
|
|
60
82
|
'專案B/頁A/區塊A',
|
|
61
|
-
'專案B/頁A/區塊A
|
|
62
|
-
'專案B/頁A/區塊A
|
|
83
|
+
'專案B/頁A/區塊A/顯示綜合報表',
|
|
84
|
+
'專案B/頁A/區塊A/顯示當前數據',
|
|
85
|
+
'專案B/頁A/區塊B',
|
|
86
|
+
'專案B/頁A/區塊B/下載報表按鈕',
|
|
87
|
+
'專案B/頁A/區塊B/下載數據按鈕',
|
|
88
|
+
'專案B/頁A/區塊C',
|
|
89
|
+
|
|
63
90
|
'專案B/頁B/區塊A',
|
|
91
|
+
'專案B/頁B/區塊A/待辦事項清單',
|
|
92
|
+
'專案B/頁B/區塊A/相關資源清單',
|
|
64
93
|
'專案B/頁B/區塊B',
|
|
65
94
|
'專案B/頁B/區塊B/顯示後台按鈕',
|
|
66
95
|
'專案B/頁B/區塊B/轉跳主站按鈕',
|
|
96
|
+
|
|
67
97
|
]
|
|
68
98
|
rs = map(rs, (key, k) => {
|
|
69
|
-
let v = funNew({
|
|
99
|
+
let v = funNew({
|
|
100
|
+
userId: 'id-for-admin',
|
|
101
|
+
order: k,
|
|
102
|
+
description: `${key}的說明`,
|
|
103
|
+
})
|
|
70
104
|
v.id = key
|
|
71
|
-
v.order = k
|
|
72
105
|
v = dtpick(v, keys(settings))
|
|
73
106
|
return v
|
|
74
107
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import map from 'lodash-es/map.js'
|
|
2
|
-
import keys from 'lodash-es/keys.js'
|
|
1
|
+
import map from 'lodash-es/map.js'
|
|
2
|
+
import keys from 'lodash-es/keys.js'
|
|
3
3
|
import genID from 'wsemi/src/genID.mjs'
|
|
4
4
|
import dtmapping from 'wsemi/src/dtmapping.mjs'
|
|
5
5
|
import dtpick from 'wsemi/src/dtpick.mjs'
|
|
@@ -35,12 +35,12 @@ let settings = {
|
|
|
35
35
|
type: 'TEXT',
|
|
36
36
|
},
|
|
37
37
|
from: {
|
|
38
|
-
name: '來源',
|
|
38
|
+
name: '來源', //標注使用者來源, 亦供外部批次變更使用
|
|
39
39
|
type: 'STRING',
|
|
40
40
|
},
|
|
41
|
-
|
|
42
|
-
name: '
|
|
43
|
-
type: '
|
|
41
|
+
cgrups: {
|
|
42
|
+
name: '權限群組清單', //為json字串
|
|
43
|
+
type: 'TEXT',
|
|
44
44
|
},
|
|
45
45
|
isAdmin: {
|
|
46
46
|
name: '是否為系統管理員',
|
|
@@ -74,6 +74,7 @@ let funNew = (ndata = {}) => {
|
|
|
74
74
|
o.isAdmin = 'n'
|
|
75
75
|
o.userIdUpdate = o.userId
|
|
76
76
|
o.timeCreate = nowms2str()
|
|
77
|
+
o.userIdUpdate = o.userId
|
|
77
78
|
o.timeUpdate = o.timeCreate
|
|
78
79
|
o.isActive = 'y'
|
|
79
80
|
return o
|
|
@@ -81,32 +82,59 @@ let funNew = (ndata = {}) => {
|
|
|
81
82
|
|
|
82
83
|
let funTest = () => {
|
|
83
84
|
let rs = [
|
|
84
|
-
|
|
85
|
-
'peter',
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
|
|
86
|
+
['peter', 'teamA', `
|
|
87
|
+
{
|
|
88
|
+
'權限群組M1': {
|
|
89
|
+
'mode': 'OR',
|
|
90
|
+
'isActive': 'y',
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
`, 'n'],
|
|
94
|
+
['mary', 'teamA', `
|
|
95
|
+
{
|
|
96
|
+
'權限群組M2': {
|
|
97
|
+
'mode': 'OR',
|
|
98
|
+
'isActive': 'y',
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
`, 'n'],
|
|
102
|
+
['john', 'teamA', `
|
|
103
|
+
{
|
|
104
|
+
'權限群組M3': {
|
|
105
|
+
'mode': 'OR',
|
|
106
|
+
'isActive': 'y',
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
`, 'n'],
|
|
110
|
+
['admin', '', `
|
|
111
|
+
{
|
|
112
|
+
'權限群組M4': {
|
|
113
|
+
'mode': 'OR',
|
|
114
|
+
'isActive': 'y',
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
`, 'y'],
|
|
118
|
+
|
|
90
119
|
]
|
|
91
|
-
rs = map(rs, (name, k) => {
|
|
92
|
-
let v = funNew({
|
|
120
|
+
rs = map(rs, ([name, from, cgrups, isAdmin], k) => {
|
|
121
|
+
let v = funNew({
|
|
122
|
+
userId: 'id-for-admin',
|
|
123
|
+
order: k,
|
|
124
|
+
name,
|
|
125
|
+
email: `${name}@example.com`,
|
|
126
|
+
from,
|
|
127
|
+
cgrups,
|
|
128
|
+
isAdmin,
|
|
129
|
+
})
|
|
93
130
|
v.id = `id-for-${name}`
|
|
94
|
-
|
|
95
|
-
|
|
131
|
+
if (name === 'john') {
|
|
132
|
+
v.email = `${v.email};john@test.com`
|
|
133
|
+
}
|
|
134
|
+
v.isAdmin = isAdmin
|
|
96
135
|
v = dtpick(v, keys(settings))
|
|
97
136
|
return v
|
|
98
137
|
})
|
|
99
|
-
rs[0].ruleGroupsIds = `id-for-權限群組1;id-for-權限群組2`
|
|
100
|
-
rs[1].ruleGroupsIds = `id-for-權限群組1`
|
|
101
|
-
rs[0].from = 'teamA'
|
|
102
|
-
rs[1].from = 'teamA'
|
|
103
|
-
rs[2].from = 'teamA'
|
|
104
|
-
rs[3].from = 'teamB'
|
|
105
|
-
rs[4].from = 'teamB'
|
|
106
|
-
rs[4].isActive = 'n'
|
|
107
|
-
rs[5].ruleGroupsIds = `id-for-權限群組1`
|
|
108
|
-
rs[5].description = '測試系統管理員描述說明'
|
|
109
|
-
rs[5].isAdmin = 'y' //admin
|
|
110
138
|
console.log(`已產生: ${keyTable} 測試資料`, rs)
|
|
111
139
|
return rs
|
|
112
140
|
}
|