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
@@ -80,7 +80,7 @@
80
80
 
81
81
  <dt class="tag-source">Source:</dt>
82
82
  <dd class="tag-source"><ul class="dummy"><li>
83
- <a href="WWebPerm.mjs.html">WWebPerm.mjs</a>, <a href="WWebPerm.mjs.html#line128">line 128</a>
83
+ <a href="WWebPerm.mjs.html">WWebPerm.mjs</a>, <a href="WWebPerm.mjs.html#line131">line 131</a>
84
84
  </li></ul></dd>
85
85
 
86
86
 
@@ -925,7 +925,7 @@
925
925
  <br class="clear">
926
926
 
927
927
  <footer>
928
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Mar 25 2024 23:59:58 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
928
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Sep 24 2024 15:29:14 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
929
929
  </footer>
930
930
 
931
931
  <script>prettyPrint();</script>
@@ -47,9 +47,10 @@
47
47
  <article>
48
48
  <pre class="prettyprint source linenums"><code>import path from 'path'
49
49
  import fs from 'fs'
50
- import get from 'lodash-es/get.js'
51
- import each from 'lodash-es/each.js'
52
- import keys from 'lodash-es/keys.js'
50
+ import get from 'lodash-es/get.js'
51
+ import map from 'lodash-es/map.js'
52
+ import keys from 'lodash-es/keys.js'
53
+ import size from 'lodash-es/size.js'
53
54
  import iseobj from 'wsemi/src/iseobj.mjs'
54
55
  import isestr from 'wsemi/src/isestr.mjs'
55
56
  import ispint from 'wsemi/src/ispint.mjs'
@@ -65,6 +66,8 @@ import pm2resolve from 'wsemi/src/pm2resolve.mjs'
65
66
  import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
66
67
  import fsIsFile from 'wsemi/src/fsIsFile.mjs'
67
68
  import replace from 'wsemi/src/replace.mjs'
69
+ import ltdtDiffByKey from 'wsemi/src/ltdtDiffByKey.mjs'
70
+ import ltdtmapping from 'wsemi/src/ltdtmapping.mjs'
68
71
  import WServHapiServer from 'w-serv-hapi/src/WServHapiServer.mjs'
69
72
  import WServOrm from 'w-serv-orm/src/WServOrm.mjs'
70
73
  import ds from '../src/schema/index.mjs'
@@ -301,26 +304,102 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
301
304
 
302
305
 
303
306
  //getUsersList
304
- let getUsersList = async (userId, token) => {
307
+ let getUsersList = async (userId) => {
305
308
  let rs = await woItems.users.select() //isActive為y或n都需要提供, 給前端編輯
306
309
  return rs
307
310
  }
308
311
 
309
312
 
310
313
  //getRuleGroupsList
311
- let getRuleGroupsList = async (userId, token) => {
312
- let rs = await woItems.ruleGroups.select()
314
+ let getRuleGroupsList = async (userId) => {
315
+ let rs = await woItems.pemis.select()
313
316
  return rs
314
317
  }
315
318
 
316
319
 
317
320
  //getTargetsList
318
- let getTargetsList = async (userId, token) => {
321
+ let getTargetsList = async (userId) => {
319
322
  let rs = await woItems.targets.select()
320
323
  return rs
321
324
  }
322
325
 
323
326
 
327
+ //updateTabItems
328
+ let updateTabItems = async (woName, userId, rows, keyDetect) => {
329
+ // console.log('updateTabItems', woName, userId, rows.length, keyDetect)
330
+
331
+ //ltdtmapping
332
+ rows = ltdtmapping(rows, ds[woName].keys)
333
+ // console.log('ltdtmapping rows', rows)
334
+
335
+ //重給order
336
+ rows = map(rows, (r, k) => {
337
+ r.order = k + 1
338
+ return r
339
+ })
340
+
341
+ //ltdtDiffByKey
342
+ let ltdtOld = await woItems[woName].select()
343
+ let ltdtNew = rows
344
+ let r = ltdtDiffByKey(ltdtOld, ltdtNew, keyDetect)
345
+ // console.log('ltdtDiffByKey r', r)
346
+
347
+ //del
348
+ if (size(r.del) > 0) {
349
+ await procOrm(userId, woName, 'del', r.del) //須使用procOrm才有辦法自動給予相關欄位
350
+ // .catch((err) => {
351
+ // console.log('woItems[woName].del err', err)
352
+ // })
353
+ }
354
+
355
+ //add
356
+ if (size(r.add) > 0) {
357
+ await procOrm(userId, woName, 'insert', r.add) //須使用procOrm才有辦法自動給予相關欄位
358
+ // .catch((err) => {
359
+ // console.log('woItems[woName].insert err', err)
360
+ // })
361
+ }
362
+
363
+ //diff
364
+ if (size(r.diff) > 0) {
365
+ await procOrm(userId, woName, 'save', r.diff) //須使用procOrm才有辦法自動給予相關欄位
366
+ // .catch((err) => {
367
+ // console.log('woItems[woName].save err', err)
368
+ // })
369
+ }
370
+
371
+ return ltdtNew
372
+ }
373
+
374
+
375
+ //updateTargets
376
+ let updateTargets = async (userId, rows) => {
377
+ rows = await updateTabItems('targets', userId, rows, 'id')
378
+ return rows
379
+ }
380
+
381
+
382
+ //updatePemis
383
+ let updatePemis = async (userId, rows) => {
384
+ rows = await updateTabItems('pemis', userId, rows, 'name')
385
+ return rows
386
+ }
387
+
388
+
389
+ //updateGrups
390
+ let updateGrups = async (userId, rows) => {
391
+ rows = await updateTabItems('grups', userId, rows, 'name')
392
+ return rows
393
+ }
394
+
395
+
396
+ //updateUsers
397
+ let updateUsers = async (userId, rows) => {
398
+ rows = await updateTabItems('users', userId, rows, 'id')
399
+ return rows
400
+ }
401
+
402
+
324
403
  //parseToken
325
404
  let parseToken = (req) => {
326
405
 
@@ -493,12 +572,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
493
572
  return Promise.reject(`invalid from from inp`)
494
573
  }
495
574
 
496
-
497
575
  //vs
498
576
  let vs = get(inp, key, [])
499
- //users
500
- //targets
501
- //ruleGroups
502
577
 
503
578
  //check
504
579
  if (!isearr(vs)) {
@@ -519,7 +594,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
519
594
 
520
595
 
521
596
  //syncAndReplaceRows
522
- let syncAndReplaceRows = async (params, key) => {
597
+ let syncAndReplaceRows = async (userId, params, woName) => {
523
598
 
524
599
  //from
525
600
  let from = get(params, 'from', '')
@@ -533,28 +608,34 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
533
608
  return Promise.reject(`invalid from`)
534
609
  }
535
610
 
536
- //vs
537
- let vs = get(params, key, [])
538
- // console.log(key, vs)
611
+ //rows
612
+ let rows = get(params, woName, [])
613
+ // console.log(woName, rows)
539
614
 
540
615
  //check
541
- if (!isearr(vs)) {
616
+ if (!isearr(rows)) {
542
617
  console.log('params', params)
543
- console.log(key, vs)
544
- console.log(`invalid ${key}`)
545
- return Promise.reject(`invalid ${key}`)
618
+ console.log('woName', woName)
619
+ return Promise.reject(`invalid ${woName}`)
546
620
  }
547
621
 
548
622
  //save from
549
- each(vs, (v, k) => {
550
- vs[k].from = from
623
+ rows = map(rows, (v, k) => {
624
+ // v.order = k + 1 //order大部分由外部給予, 不能複寫
625
+ v.from = from
626
+ return v
551
627
  })
552
628
 
629
+ //ltdtmapping
630
+ rows = ltdtmapping(rows, ds[woName].keys)
631
+ // console.log('ltdtmapping rows', rows)
632
+
553
633
  //delAll from
554
- await woItems[key].delAll({ from })
634
+ await woItems[woName].delAll({ from })
555
635
 
556
636
  //insert
557
- let r = await woItems[key].insert(vs)
637
+ // let r = await woItems[woName].insert(rows)
638
+ let r = await procOrm(userId, woName, 'insert', rows) //須使用procOrm才有辦法自動給予相關欄位
558
639
 
559
640
  return r
560
641
  }
@@ -591,38 +672,39 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
591
672
  }
592
673
 
593
674
 
594
- //getGenUserAndRulesByUserId
675
+ //getGenUserAndRulesByUserId bbb
595
676
  let getGenUserAndRulesByUserId = async (userId) => {
596
677
 
597
678
  //userFind
598
679
  let userFind = await getGenUserByUserId(userId)
599
680
  // console.log('userFind', userFind)
600
681
 
601
- //ruleGroups
602
- let ruleGroups = await woItems.ruleGroups.select()
603
- // console.log('ruleGroups', ruleGroups)
682
+ //grups
683
+ let grups = await woItems.grups.select()
684
+ // console.log('grups', grups)
685
+
686
+ //pemis
687
+ let pemis = await woItems.pemis.select()
688
+ // console.log('pemis', pemis)
604
689
 
605
690
  //targets
606
691
  let targets = await woItems.targets.select()
607
692
  // console.log('targets', targets)
608
693
 
609
694
  //getUserRules
610
- let urs = getUserRules(userFind, ruleGroups, targets)
611
- // console.log('getUserRules', urs)
695
+ let kur = getUserRules(userFind, grups, pemis, targets)
696
+ // console.log('getUserRules', kur)
612
697
 
613
698
  //check
614
- if (!iseobj(urs)) {
699
+ if (!iseobj(kur)) {
615
700
  console.log('userId', userId)
616
- console.log(`can not get permrules`)
617
- return Promise.reject(`can not get permrules`)
701
+ console.log(`can not get rules of user`)
702
+ return Promise.reject(`can not get rules of user`)
618
703
  }
619
704
 
620
705
  return {
621
- user: {
622
- ...userFind,
623
- ruleGroupsNames: urs.ruleGroupsNames, //ruleGroupsNames併入user內顯示
624
- },
625
- rules: urs.rules,
706
+ user: userFind,
707
+ kur,
626
708
  }
627
709
  }
628
710
 
@@ -723,7 +805,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
723
805
  // console.log('getPerm', req)
724
806
 
725
807
  async function core() {
726
- //提供對象為node與browser使用者, node實際也為轉發之browser使用者, 須先檢測token是否有效, 再依照token取得使用者資訊物件, 再由其userId查詢回傳該使用者之權限資訊物件
808
+ //提供對象為node與browser使用者, node通常也為其他系統之browser使用者因須驗證而由node轉發, 皆須先檢測token是否有效, 再依照token取得使用者資訊物件, 再由其userId查詢回傳該使用者之權限資訊物件
727
809
 
728
810
  //parseToken
729
811
  let token = parseToken(req)
@@ -828,10 +910,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
828
910
  },
829
911
  {
830
912
  method: 'POST',
831
- path: '/syncAndReplaceUsers',
913
+ path: '/syncAndReplaceTargets',
832
914
  handler: async function (req, res) {
833
- // console.log('syncAndReplaceUsers', req)
834
- // console.log('payload', req.payload)
915
+ // console.log('syncAndReplaceTargets', req)
916
+ // console.log('syncAndReplaceTargets payload', req.payload)
835
917
 
836
918
  async function core() {
837
919
  //提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
@@ -840,21 +922,24 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
840
922
  let token = get(req, 'query.token', '')
841
923
 
842
924
  //getAndVerifyAppTokenUser
843
- let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceUsers')
925
+ let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceTargets')
844
926
 
845
927
  //check
846
928
  if (!iseobj(user)) {
847
929
  console.log('token', token)
848
- console.log('[API]syncAndReplaceUsers/check user: invalid user')
930
+ console.log('[API]syncAndReplaceTargets/check user: invalid user')
849
931
  console.log(`token does not have permission`)
850
932
  return Promise.reject(`token does not have permission`)
851
933
  }
852
934
 
935
+ //userId
936
+ let userId = get(user, 'id', '')
937
+
853
938
  //parsePayload
854
- let inp = await parsePayload(req, 'users')
939
+ let inp = await parsePayload(req, 'targets')
855
940
 
856
941
  //syncAndReplaceRows
857
- let r = await syncAndReplaceRows(inp, 'users')
942
+ let r = await syncAndReplaceRows(userId, inp, 'targets')
858
943
 
859
944
  return r
860
945
  }
@@ -868,10 +953,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
868
953
  },
869
954
  {
870
955
  method: 'POST',
871
- path: '/syncAndReplaceTargets',
956
+ path: '/syncAndReplacePemis',
872
957
  handler: async function (req, res) {
873
- // console.log('syncAndReplaceTargets', req)
874
- // console.log('payload', req.payload)
958
+ // console.log('syncAndReplacePemis', req)
959
+ // console.log('syncAndReplacePemis payload', req.payload)
875
960
 
876
961
  async function core() {
877
962
  //提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
@@ -880,21 +965,24 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
880
965
  let token = get(req, 'query.token', '')
881
966
 
882
967
  //getAndVerifyAppTokenUser
883
- let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceTargets')
968
+ let user = await getAndVerifyAppTokenUser(token, 'syncAndReplacePemis')
884
969
 
885
970
  //check
886
971
  if (!iseobj(user)) {
887
972
  console.log('token', token)
888
- console.log('[API]syncAndReplaceTargets/check user: invalid user')
973
+ console.log('[API]syncAndReplacePemis/check user: invalid user')
889
974
  console.log(`token does not have permission`)
890
975
  return Promise.reject(`token does not have permission`)
891
976
  }
892
977
 
893
978
  //parsePayload
894
- let inp = await parsePayload(req, 'targets')
979
+ let inp = await parsePayload(req, 'pemis')
980
+
981
+ //userId
982
+ let userId = get(user, 'id', '')
895
983
 
896
984
  //syncAndReplaceRows
897
- let r = await syncAndReplaceRows(inp, 'targets')
985
+ let r = await syncAndReplaceRows(userId, inp, 'pemis')
898
986
 
899
987
  return r
900
988
  }
@@ -908,10 +996,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
908
996
  },
909
997
  {
910
998
  method: 'POST',
911
- path: '/syncAndReplaceRuleGroups',
999
+ path: '/syncAndReplaceGrups',
912
1000
  handler: async function (req, res) {
913
- // console.log('syncAndReplaceRuleGroups', req)
914
- // console.log('payload', req.payload)
1001
+ // console.log('syncAndReplaceGrups', req)
1002
+ // console.log('syncAndReplaceGrups payload', req.payload)
915
1003
 
916
1004
  async function core() {
917
1005
  //提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
@@ -920,21 +1008,67 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
920
1008
  let token = get(req, 'query.token', '')
921
1009
 
922
1010
  //getAndVerifyAppTokenUser
923
- let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceRuleGroups')
1011
+ let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceGrups')
924
1012
 
925
1013
  //check
926
1014
  if (!iseobj(user)) {
927
1015
  console.log('token', token)
928
- console.log('[API]syncAndReplaceRuleGroups/check user: invalid user')
1016
+ console.log('[API]syncAndReplaceGrups/check user: invalid user')
929
1017
  console.log(`token does not have permission`)
930
1018
  return Promise.reject(`token does not have permission`)
931
1019
  }
932
1020
 
933
1021
  //parsePayload
934
- let inp = await parsePayload(req, 'ruleGroups')
1022
+ let inp = await parsePayload(req, 'grups')
1023
+
1024
+ //userId
1025
+ let userId = get(user, 'id', '')
935
1026
 
936
1027
  //syncAndReplaceRows
937
- let r = await syncAndReplaceRows(inp, 'ruleGroups')
1028
+ let r = await syncAndReplaceRows(userId, inp, 'grups')
1029
+
1030
+ return r
1031
+ }
1032
+
1033
+ //pm2resolve core
1034
+ let r = await pm2resolve(core)()
1035
+ // console.log('verifyIdentity', r)
1036
+
1037
+ return r
1038
+ },
1039
+ },
1040
+ {
1041
+ method: 'POST',
1042
+ path: '/syncAndReplaceUsers',
1043
+ handler: async function (req, res) {
1044
+ // console.log('syncAndReplaceUsers', req)
1045
+ // console.log('syncAndReplaceUsers payload', req.payload)
1046
+
1047
+ async function core() {
1048
+ //提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
1049
+
1050
+ //token
1051
+ let token = get(req, 'query.token', '')
1052
+
1053
+ //getAndVerifyAppTokenUser
1054
+ let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceUsers')
1055
+
1056
+ //check
1057
+ if (!iseobj(user)) {
1058
+ console.log('token', token)
1059
+ console.log('[API]syncAndReplaceUsers/check user: invalid user')
1060
+ console.log(`token does not have permission`)
1061
+ return Promise.reject(`token does not have permission`)
1062
+ }
1063
+
1064
+ //parsePayload
1065
+ let inp = await parsePayload(req, 'users')
1066
+
1067
+ //userId
1068
+ let userId = get(user, 'id', '')
1069
+
1070
+ //syncAndReplaceRows
1071
+ let r = await syncAndReplaceRows(userId, inp, 'users')
938
1072
 
939
1073
  return r
940
1074
  }
@@ -963,7 +1097,15 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
963
1097
  pathStaticFiles,
964
1098
  apis,
965
1099
  getUserIDFromToken: async (token) => { //可使用async或sync函數
966
- return ''
1100
+ // console.log('getUserIDFromToken', token)
1101
+ let user = await getUserByToken(token)
1102
+ let userId = get(user, 'id', '')
1103
+ if (!isestr(userId)) {
1104
+ console.log('token', token)
1105
+ console.log('userId', userId)
1106
+ return Promise.reject(`can not find user.id`)
1107
+ }
1108
+ return userId
967
1109
  },
968
1110
  useDbORM: true,
969
1111
  dbORMs: woItems,
@@ -973,10 +1115,16 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
973
1115
  tableNamesSync,
974
1116
  extFuncs: { //接收參數第1個為userId, 之後才是前端給予參數
975
1117
  getWebInfor,
976
- getUsersList,
977
- getRuleGroupsList,
1118
+
978
1119
  getTargetsList,
979
- //...
1120
+ getRuleGroupsList,
1121
+ getUsersList,
1122
+
1123
+ updateTargets,
1124
+ updatePemis,
1125
+ updateGrups,
1126
+ updateUsers,
1127
+
980
1128
  },
981
1129
  hookBefores: null,
982
1130
  hookAfters: null,
@@ -1003,7 +1151,7 @@ export default WWebPerm
1003
1151
  <br class="clear">
1004
1152
 
1005
1153
  <footer>
1006
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Mar 25 2024 23:59:58 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1154
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Sep 24 2024 15:29:14 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1007
1155
  </footer>
1008
1156
 
1009
1157
  <script>prettyPrint();</script>
package/docs/index.html CHANGED
@@ -71,7 +71,7 @@
71
71
  <br class="clear">
72
72
 
73
73
  <footer>
74
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Mar 25 2024 23:59:58 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
74
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Sep 24 2024 15:29:14 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
75
75
  </footer>
76
76
 
77
77
  <script>prettyPrint();</script>
package/g.backupDb.mjs CHANGED
@@ -7,4 +7,4 @@ getDb.backup(woItems)
7
7
 
8
8
 
9
9
  //備份資料重與由備份資料重建資料庫
10
- //node --experimental-modules --es-module-specifier-resolution=node g.backupDb.mjs
10
+ //node --experimental-modules g.backupDb.mjs