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.
Files changed (68) hide show
  1. package/.vscode/launch.json +0 -1
  2. package/README.md +0 -1
  3. package/dist/css/app.f22995d1.css +1 -0
  4. package/dist/index.tmp +1 -1
  5. package/dist/js/app-legacy.82274c39.js +2 -0
  6. package/dist/js/app-legacy.82274c39.js.map +1 -0
  7. package/dist/js/app.82274c39.js +2 -0
  8. package/dist/js/app.82274c39.js.map +1 -0
  9. package/dist/js/chunk-vendors-legacy.d89048a8.js +13 -0
  10. package/dist/js/chunk-vendors-legacy.d89048a8.js.map +1 -0
  11. package/dist/js/chunk-vendors.d89048a8.js +13 -0
  12. package/dist/js/chunk-vendors.d89048a8.js.map +1 -0
  13. package/dist/w-web-perm.umd.js +2 -2
  14. package/dist/w-web-perm.umd.js.map +1 -1
  15. package/docs/WWebPerm.html +2 -2
  16. package/docs/WWebPerm.mjs.html +212 -64
  17. package/docs/index.html +1 -1
  18. package/g.backupDb.mjs +1 -1
  19. package/g.initialData.mjs +211 -111
  20. package/g.initialTestData.mjs +2 -1
  21. package/g.mjs +0 -0
  22. package/g.provideGrups.mjs +87 -0
  23. package/g.providePemis.mjs +43 -0
  24. package/g.provideTargets.mjs +20 -13
  25. package/g.provideUsers.mjs +45 -13
  26. package/package.json +8 -8
  27. package/script.txt +5 -5
  28. package/server/WWebPerm.mjs +211 -63
  29. package/server/provideGrups.mjs +64 -0
  30. package/server/{provideRuleGroups.mjs → providePemis.mjs} +14 -15
  31. package/server/provideTargets.mjs +8 -5
  32. package/server/provideUsers.mjs +9 -9
  33. package/src/App.vue +16 -3
  34. package/src/components/Layout.vue +13 -5
  35. package/src/components/LayoutContent.vue +31 -16
  36. package/src/components/LayoutContentGrups.vue +793 -0
  37. package/src/components/LayoutContentPemis.vue +793 -0
  38. package/src/components/LayoutContentTargets.vue +481 -307
  39. package/src/components/LayoutContentUsers.vue +796 -291
  40. package/src/components/VeCgrups.vue +926 -0
  41. package/src/components/VeCpemis.vue +926 -0
  42. package/src/components/VeCrules.vue +820 -0
  43. package/src/main.js +2 -2
  44. package/src/perm.mjs +5 -5
  45. package/src/plugins/mShare.mjs +444 -153
  46. package/src/plugins/mUI.mjs +37 -19
  47. package/src/schema/gi.mjs +1 -1
  48. package/src/schema/index.mjs +4 -2
  49. package/src/schema/tables/grups.mjs +154 -0
  50. package/src/schema/tables/{ruleGroups.mjs → pemis.mjs} +27 -16
  51. package/src/schema/tables/targets.mjs +49 -16
  52. package/src/schema/tables/users.mjs +55 -27
  53. package/src/store/mutations.mjs +375 -150
  54. package/srv.mjs +2 -2
  55. package/tableTags-web-perm.json +1 -1
  56. package/dist/css/app.f6c50bec.css +0 -1
  57. package/dist/js/app-legacy.767522f1.js +0 -2
  58. package/dist/js/app-legacy.767522f1.js.map +0 -1
  59. package/dist/js/app.767522f1.js +0 -2
  60. package/dist/js/app.767522f1.js.map +0 -1
  61. package/dist/js/chunk-vendors-legacy.b0d63e17.js +0 -13
  62. package/dist/js/chunk-vendors-legacy.b0d63e17.js.map +0 -1
  63. package/dist/js/chunk-vendors.b0d63e17.js +0 -13
  64. package/dist/js/chunk-vendors.b0d63e17.js.map +0 -1
  65. package/g.provideRuleGroups.mjs +0 -56
  66. package/src/components/LayoutContentGroups.vue +0 -671
  67. package/src/components/VeUser.vue +0 -446
  68. package/src/components/ruleGroup.vue +0 -645
@@ -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
- return get(kpText, key, '')
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
@@ -5,4 +5,4 @@ import genIndex from 'w-data-collector/src/genIndex.mjs'
5
5
  genIndex('./src/schema/tables', './src/schema')
6
6
 
7
7
 
8
- //node --experimental-modules --es-module-specifier-resolution=node ./src/schema/gi.mjs
8
+ //node --experimental-modules ./src/schema/gi.mjs
@@ -1,11 +1,13 @@
1
- import ruleGroups from './tables/ruleGroups.mjs'
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
- ruleGroups,
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 = 'ruleGroups'
11
- let tableNameCht = '權限群組'
12
- let tableNameEng = 'Rule groups'
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: '規則', //為json字串, 例如{ '___all___': {show:'y',active:'n'}, '專案A/頁A': {show:'y',active:'y'}, '專案A/頁B': {show:'n',active:'n'} }
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
- ['權限群組1', `{ "___all___": { "show": "y", "active": "n" }, "專案A/頁A": { "show": "y", "active": "y" }, "專案A/頁B": { "show": "n", "active": "n" } }`],
72
- ['權限群組2', `{ "___all___": { "show": "y", "active": "n" } }`],
73
- ['權限群組3', `{ "___all___": { "show": "y", "active": "y" } }`],
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, ([g, crules], k) => {
76
- let v = funNew({ userId: 'id-for-admin', crules })
77
- v.id = `id-for-${g}`
78
- v.order = k
79
- v.name = g
80
- v.description = `${g}的說明`
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
- // import nowms2str from 'wsemi/src/nowms2str.mjs'
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
- // o.timeCreate = nowms2str()
39
- // o.timeUpdate = o.timeCreate
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
- '專案A',
47
- '專案A/頁A',
68
+
48
69
  '專案A/頁A/區塊A',
49
70
  '專案A/頁A/區塊A/執行按鈕',
50
71
  '專案A/頁A/區塊A/分析按鈕',
51
- '專案A/頁B',
72
+
52
73
  '專案A/頁B/區塊A',
53
74
  '專案A/頁B/區塊A/執行按鈕',
54
75
  '專案A/頁B/區塊A/分析按鈕',
55
- '專案A/頁B/區塊B',
76
+
56
77
  '專案A/頁B/區塊B/展開按鈕',
57
78
  '專案A/頁B/區塊B/下載按鈕',
58
- '專案B',
59
- '專案B/頁A',
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({ description: key })
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
- ruleGroupsIds: {
42
- name: '所屬權限群組主鍵', //多主鍵用分號區隔
43
- type: 'STRING',
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
- 'mary',
87
- 'john',
88
- 'bill',
89
- 'admin',
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({ userId: 'id-for-admin', name })
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
- v.order = k
95
- v.email = `${name}@example.com`
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
  }