w-web-perm 1.0.4 → 1.0.6

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 (58) hide show
  1. package/README.md +9 -4
  2. package/dist/css/app.dad1d596.css +1 -0
  3. package/dist/index.tmp +1 -1
  4. package/dist/js/app-legacy.4e39a313.js +2 -0
  5. package/dist/js/app-legacy.4e39a313.js.map +1 -0
  6. package/dist/js/app.4e39a313.js +2 -0
  7. package/dist/js/app.4e39a313.js.map +1 -0
  8. package/dist/js/chunk-vendors-legacy.827f1c54.js +13 -0
  9. package/dist/js/chunk-vendors-legacy.827f1c54.js.map +1 -0
  10. package/dist/js/chunk-vendors.827f1c54.js +13 -0
  11. package/dist/js/chunk-vendors.827f1c54.js.map +1 -0
  12. package/dist/w-web-perm.umd.js +2 -2
  13. package/dist/w-web-perm.umd.js.map +1 -1
  14. package/docs/WWebPerm.html +41 -5
  15. package/docs/WWebPerm.mjs.html +341 -25
  16. package/docs/index.html +1 -1
  17. package/{g.mDb.mjs → g.backupDb.mjs} +1 -1
  18. package/g.initialData.mjs +111 -0
  19. package/{g.mInitialTestData.mjs → g.initialTestData.mjs} +1 -1
  20. package/g.provideRuleGroups.mjs +56 -0
  21. package/g.provideTargets.mjs +57 -0
  22. package/g.provideUsers.mjs +45 -0
  23. package/package.json +2 -7
  24. package/public/index.html +1 -1
  25. package/server/WWebPerm.mjs +340 -24
  26. package/server/provideRuleGroups.mjs +65 -0
  27. package/server/provideTargets.mjs +59 -0
  28. package/server/provideUsers.mjs +68 -0
  29. package/src/App.vue +2 -10
  30. package/src/components/Common/CheckYes.vue +2 -2
  31. package/src/components/Common/CheckYesNo.vue +3 -3
  32. package/src/components/Common/LoadingWinBar.vue +1 -1
  33. package/src/components/LayoutContent.vue +37 -68
  34. package/src/components/LayoutContentGroups.vue +68 -62
  35. package/src/components/LayoutContentTargets.vue +56 -54
  36. package/src/components/LayoutContentUsers.vue +66 -61
  37. package/src/components/VeUser.vue +18 -26
  38. package/src/components/ruleGroup.vue +11 -11
  39. package/src/main.js +0 -2
  40. package/src/schema/tables/ruleGroups.mjs +11 -11
  41. package/src/schema/tables/targets.mjs +6 -9
  42. package/src/schema/tables/users.mjs +5 -5
  43. package/src/store/mutations.mjs +324 -69
  44. package/srv.mjs +10 -11
  45. package/tableTags-web-perm.json +1 -1
  46. package/vue.config.js +1 -1
  47. package/dist/css/app.79b4b59b.css +0 -1
  48. package/dist/css/chunk-vendors.99633b53.css +0 -5
  49. package/dist/js/app-legacy.48e6e535.js +0 -2
  50. package/dist/js/app-legacy.48e6e535.js.map +0 -1
  51. package/dist/js/app.7f6428ac.js +0 -2
  52. package/dist/js/app.7f6428ac.js.map +0 -1
  53. package/dist/js/chunk-vendors-legacy.7cb6c366.js +0 -13
  54. package/dist/js/chunk-vendors-legacy.7cb6c366.js.map +0 -1
  55. package/dist/js/chunk-vendors.7cb6c366.js +0 -13
  56. package/dist/js/chunk-vendors.7cb6c366.js.map +0 -1
  57. package/g.mInitialData.mjs +0 -147
  58. package/src/plugins/mVuetify.mjs +0 -12
@@ -1,13 +1,16 @@
1
1
  import path from 'path'
2
2
  import fs from 'fs'
3
3
  import get from 'lodash/get'
4
+ import each from 'lodash/each'
4
5
  import keys from 'lodash/keys'
5
6
  import iseobj from 'wsemi/src/iseobj.mjs'
6
7
  import isestr from 'wsemi/src/isestr.mjs'
7
8
  import ispint from 'wsemi/src/ispint.mjs'
9
+ import isearr from 'wsemi/src/isearr.mjs'
8
10
  import isfun from 'wsemi/src/isfun.mjs'
9
11
  import ispm from 'wsemi/src/ispm.mjs'
10
12
  import cint from 'wsemi/src/cint.mjs'
13
+ import j2o from 'wsemi/src/j2o.mjs'
11
14
  import strleft from 'wsemi/src/strleft.mjs'
12
15
  import strright from 'wsemi/src/strright.mjs'
13
16
  import strdelright from 'wsemi/src/strdelright.mjs'
@@ -21,13 +24,14 @@ import { getUserRules } from '../src/plugins/mShare.mjs'
21
24
 
22
25
 
23
26
  /**
24
- * 基於hapi之API伺服器
27
+ * 權限伺服器
25
28
  *
26
29
  * @class
27
30
  * @param {Function} WOrm 輸入資料庫ORM函數
28
31
  * @param {String} url 輸入資料庫連線字串,例如'mongodb://sername:password@$127.0.0.1:27017'
29
32
  * @param {String} db 輸入資料庫名稱字串
30
33
  * @param {Function} getUserByToken 輸入處理函數,函數會傳入使用者token,通過此函數處理後並回傳使用者資訊物件,並至少須提供'id'、'email'、'name'、'isAdmin'欄位,且'isAdmin'限輸入'y'或'n',且輸入'y'時會複寫權限系統該使用者之'isAdmin'欄位值
34
+ * @param {Function} verifyUser 輸入處理函數,函數會傳入使用者資訊物件,通過此函數識別後回傳布林值,允許使用者回傳true,反之回傳false
31
35
  * @param {Object} [opt={}] 輸入設定物件,預設{}
32
36
  * @param {Integer} [opt.serverPort=11006] 輸入伺服器通訊port,預設11006
33
37
  * @param {Boolean} [opt.bCheckUser=false] 輸入是否檢查使用者資訊布林值,預設false
@@ -40,9 +44,73 @@ import { getUserRules } from '../src/plugins/mShare.mjs'
40
44
  * @param {String} [opt.mappingBy='email'] 輸入外部系統識別使用者token後所提供之資料物件,與權限系統之使用者資料物件,兩者間查找之對應欄位,可選'id'、'email'、'name',預設'email'
41
45
  * @returns {Object} 回傳物件,其內server為hapi伺服器實體,wsrv為w-converhp的伺服器事件物件,wsds為w-serv-webdata的伺服器事件物件,可監聽error事件
42
46
  * @example
43
-
47
+ * import WOrm from 'w-orm-mongodb/src/WOrmMongodb.mjs' //自行選擇引用ORM, 使用Mongodb測試
48
+ * import WWebPerm from './server/WWebPerm.mjs'
49
+ * import getSettings from './g.getSettings.mjs'
50
+ *
51
+ * //st
52
+ * let st = getSettings()
53
+ *
54
+ * let url = `mongodb://${st.dbUsername}:${st.dbPassword}@${st.dbIP}:${st.dbPort}` //使用Mongodb測試
55
+ * let db = st.dbName
56
+ * let opt = {
57
+ *
58
+ * bCheckUser: false,
59
+ * getUserById: null,
60
+ * bExcludeWhenNotAdmin: false,
61
+ *
62
+ * serverPort: 11006,
63
+ * subfolder: '', //mperm
64
+ *
65
+ * webName: {
66
+ * 'eng': 'Permission Service',
67
+ * 'cht': '權限管理系統',
68
+ * },
69
+ * webDescription: {
70
+ * 'eng': 'A web service package for user permissions and management targets.',
71
+ * 'cht': 'A web service package for user permissions and management targets.',
72
+ * },
73
+ * webLogo: 'data:image/svg+xml;base64,...',
74
+ *
75
+ * }
76
+ *
77
+ * let getUserByToken = async (token) => {
78
+ * // return {} //測試無法登入
79
+ * if (token === '{token-for-application}') { //提供外部應用系統作為存取使用者
80
+ * return {
81
+ * id: 'id-for-application',
82
+ * name: 'application',
83
+ * email: 'admin@example.com',
84
+ * isAdmin: 'y',
85
+ * }
86
+ * }
87
+ * if (token === 'sys') { //開發階段w-ui-loginout自動給予browser使用者(且位於localhost)的token為sys
88
+ * return {
89
+ * id: 'id-for-admin',
90
+ * name: 'tester',
91
+ * email: 'admin@example.com',
92
+ * isAdmin: 'y',
93
+ * }
94
+ * }
95
+ * console.log('invalid token', token)
96
+ * console.log('於生產環境時得加入SSO等驗證token機制')
97
+ * return {}
98
+ * }
99
+ *
100
+ * let verifyUser = (user) => {
101
+ * console.log('於生產環境時得加入驗證user機制')
102
+ * return user.isAdmin === 'y' //測試僅系統管理者使用
103
+ * }
104
+ *
105
+ * //WWebPerm
106
+ * let instWWebPerm = WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt)
107
+ *
108
+ * instWWebPerm.on('error', (err) => {
109
+ * console.log(err)
110
+ * })
111
+ *
44
112
  */
45
- function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
113
+ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
46
114
  let instWServHapiServer = null
47
115
 
48
116
 
@@ -74,6 +142,13 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
74
142
  }
75
143
 
76
144
 
145
+ //check verifyUser
146
+ if (!isfun(verifyUser)) {
147
+ console.log('invalid verifyUser', verifyUser)
148
+ throw new Error('invalid verifyUser')
149
+ }
150
+
151
+
77
152
  //serverPort
78
153
  let serverPort = get(opt, 'serverPort')
79
154
  if (!ispint(serverPort)) {
@@ -199,31 +274,32 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
199
274
 
200
275
  //check
201
276
  if (!iseobj(userSelf)) {
202
- console.log('invalid userSelf')
203
- return null
277
+ console.log(`can not find the user from token`, token)
278
+ return Promise.reject(`can not find the user from token`)
204
279
  }
205
280
 
206
281
  //check userSelf
207
282
  if (true) {
208
283
  let id = get(userSelf, 'id', '')
209
284
  if (!isestr(id)) {
210
- console.log('invalid userSelf.id')
211
- return null
285
+ console.log('userSelf', userSelf)
286
+ return Promise.reject(`can not get the userId`)
212
287
  }
213
288
  let email = get(userSelf, 'email', '')
214
289
  if (!isestr(email)) {
215
- console.log('invalid userSelf.email')
216
- return null
290
+ console.log('userSelf', userSelf)
291
+ return Promise.reject(`can not get the email of user`)
217
292
  }
218
293
  let name = get(userSelf, 'name', '')
219
294
  if (!isestr(name)) {
220
- console.log('invalid userSelf.name')
221
- return null
295
+ console.log('userSelf', userSelf)
296
+ return Promise.reject(`can not get userName`)
222
297
  }
223
298
  let isAdmin = get(userSelf, 'isAdmin', '')
224
299
  if (isAdmin !== 'y' && isAdmin !== 'n') {
225
- console.log('userSelf.isAdmin is not y or n')
226
- return null
300
+ console.log('userSelf', userSelf)
301
+ console.log('userSelf.isAdmin is not y or n', userSelf.isAdmin)
302
+ return Promise.reject(`can not get the role of user`)
227
303
  }
228
304
  }
229
305
 
@@ -233,8 +309,9 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
233
309
 
234
310
  //check
235
311
  if (!isestr(vSelf)) {
236
- console.log('invalid vSelf')
237
- return null
312
+ console.log('userSelf', userSelf)
313
+ console.log('mappingBy', mappingBy)
314
+ return Promise.reject(`can not get the prop of user by mappingBy`)
238
315
  }
239
316
 
240
317
  //userFind
@@ -244,8 +321,9 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
244
321
 
245
322
  //check
246
323
  if (!iseobj(userFind)) {
247
- console.log('invalid userFind')
248
- return null
324
+ console.log('userSelf', userSelf)
325
+ console.log('mappingBy', mappingBy)
326
+ return Promise.reject(`can not get the user from perm`)
249
327
  }
250
328
 
251
329
  //複寫isAdmin
@@ -256,10 +334,112 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
256
334
  }
257
335
  // console.log('userFind(isAdmin)', userFind)
258
336
 
337
+ //verifyUser
338
+ let b = verifyUser(userFind)
339
+ if (ispm(b)) {
340
+ b = await b
341
+ }
342
+
343
+ //check
344
+ if (!b) {
345
+ console.log('userSelf', userSelf)
346
+ console.log('verifyUser/userFind', userFind)
347
+ return Promise.reject(`user does not have permission`)
348
+ }
349
+
259
350
  return userFind
260
351
  }
261
352
 
262
353
 
354
+ //parsePayload
355
+ let parsePayload = async (req, key) => {
356
+ let inp = get(req, 'payload')
357
+
358
+ //to obj
359
+ if (isestr(inp)) {
360
+ inp = j2o(inp)
361
+ }
362
+
363
+ //check
364
+ if (!iseobj(inp)) {
365
+ console.log('inp', inp)
366
+ return Promise.reject(`invalid inp from req`)
367
+ }
368
+
369
+ //from
370
+ let from = get(inp, 'from', '')
371
+
372
+ //check
373
+ if (!isestr(from)) {
374
+ console.log('inp', inp)
375
+ console.log('from', from)
376
+ return Promise.reject(`invalid from from inp`)
377
+ }
378
+
379
+
380
+ //vs
381
+ let vs = get(inp, key, [])
382
+ //users
383
+ //targets
384
+ //ruleGroups
385
+
386
+ //check
387
+ if (!isearr(vs)) {
388
+ console.log('inp', inp)
389
+ console.log(key, vs)
390
+ return Promise.reject(`invalid ${key} from inp`)
391
+ }
392
+
393
+ //resave
394
+ inp = {
395
+ from,
396
+ [key]: vs,
397
+ }
398
+
399
+ return inp
400
+ }
401
+
402
+
403
+ //syncAndReplaceRows
404
+ let syncAndReplaceRows = async (params, key) => {
405
+
406
+ //from
407
+ let from = get(params, 'from', '')
408
+ // console.log('from', from)
409
+
410
+ //check
411
+ if (!isestr(from)) {
412
+ console.log('params', params)
413
+ console.log('from', from)
414
+ return Promise.reject(`invalid from`)
415
+ }
416
+
417
+ //vs
418
+ let vs = get(params, key, [])
419
+ // console.log(key, vs)
420
+
421
+ //check
422
+ if (!isearr(vs)) {
423
+ console.log('params', params)
424
+ console.log(key, vs)
425
+ return Promise.reject(`invalid ${key}`)
426
+ }
427
+
428
+ //save from
429
+ each(vs, (v, k) => {
430
+ vs[k].from = from
431
+ })
432
+
433
+ //delAll from
434
+ await woItems[key].delAll({ from })
435
+
436
+ //insert
437
+ let r = await woItems[key].insert(vs)
438
+
439
+ return r
440
+ }
441
+
442
+
263
443
  //getGenUserByKV
264
444
  let getGenUserByKV = async(keyUser, valueUser) => {
265
445
 
@@ -389,10 +569,17 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
389
569
  // console.log('userSelf', userSelf)
390
570
 
391
571
  //check
392
- if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
393
- return Promise.reject(`user does not have permission`)
572
+ if (!iseobj(userSelf)) {
573
+ console.log('token', token)
574
+ console.log('[API]getUserByToken/check userSelf: invalid userSelf')
575
+ return Promise.reject(`token does not have permission`)
394
576
  }
395
577
 
578
+ // //check
579
+ // if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
580
+ // return Promise.reject(`user does not have permission`)
581
+ // }
582
+
396
583
  return userSelf
397
584
  }
398
585
 
@@ -422,7 +609,9 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
422
609
 
423
610
  //check
424
611
  if (!iseobj(userLogin)) {
425
- return Promise.reject(`user does not have permission`)
612
+ console.log('token', token)
613
+ console.log('[API]getPerm/check userLogin: invalid userLogin')
614
+ return Promise.reject(`token does not have permission`)
426
615
  }
427
616
 
428
617
  //parseUserId
@@ -431,7 +620,9 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
431
620
 
432
621
  //check
433
622
  if (!isestr(userId)) {
434
- return Promise.reject(`invalid user`)
623
+ console.log('userLogin', userLogin)
624
+ console.log('[API]getPerm/check userId: invalid userId')
625
+ return Promise.reject(`token does not have permission`)
435
626
  }
436
627
 
437
628
  //getGenUserAndRulesByUserId
@@ -440,7 +631,9 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
440
631
 
441
632
  //check
442
633
  if (!iseobj(r)) {
443
- return Promise.reject(`user does not have permrules`)
634
+ console.log('userLogin', userLogin)
635
+ console.log('[API]getPerm/getGenUserAndRulesByUserId: user does not have permrules')
636
+ return Promise.reject(`token does not have permission`)
444
637
  }
445
638
 
446
639
  return r
@@ -471,10 +664,17 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
471
664
  // console.log('userSelf', userSelf)
472
665
 
473
666
  //check
474
- if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
475
- return Promise.reject(`user does not have permission`)
667
+ if (!iseobj(userSelf)) {
668
+ console.log('token', token)
669
+ console.log('[API]getPermById/check userSelf: invalid userSelf')
670
+ return Promise.reject(`token does not have permission`)
476
671
  }
477
672
 
673
+ // //check
674
+ // if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
675
+ // return Promise.reject(`user does not have permission`)
676
+ // }
677
+
478
678
  //userId
479
679
  let userId = get(req, 'query.userId', '')
480
680
  // console.log('userId', userId)
@@ -485,6 +685,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
485
685
 
486
686
  //check
487
687
  if (!iseobj(r)) {
688
+ console.log('userSelf', userSelf)
689
+ console.log('[API]getPermById/getGenUserAndRulesByUserId: user does not have permrules')
488
690
  return Promise.reject(`user does not have permrules`)
489
691
  }
490
692
 
@@ -495,6 +697,120 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
495
697
  let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過, 須另提取state進行判斷
496
698
  // console.log('getUserByToken', r)
497
699
 
700
+ return r
701
+ },
702
+ },
703
+ {
704
+ method: 'POST',
705
+ path: '/syncAndReplaceUsers',
706
+ handler: async function (req, res) {
707
+ // console.log('syncAndReplaceUsers', req)
708
+ // console.log('payload', req.payload)
709
+
710
+ async function core() {
711
+
712
+ //token
713
+ let token = get(req, 'query.token', '')
714
+
715
+ //getTokenUserForSelf
716
+ let user = await getTokenUserForSelf(token)
717
+
718
+ //check
719
+ if (!iseobj(user)) {
720
+ console.log('token', token)
721
+ console.log('[API]syncAndReplaceUsers/check user: invalid user')
722
+ return Promise.reject(`token does not have permission`)
723
+ }
724
+
725
+ //parsePayload
726
+ let inp = await parsePayload(req, 'users')
727
+
728
+ //syncAndReplaceRows
729
+ let r = await syncAndReplaceRows(inp, 'users')
730
+
731
+ return r
732
+ }
733
+
734
+ //pm2resolve core
735
+ let r = await pm2resolve(core)()
736
+ // console.log('verifyIdentity', r)
737
+
738
+ return r
739
+ },
740
+ },
741
+ {
742
+ method: 'POST',
743
+ path: '/syncAndReplaceTargets',
744
+ handler: async function (req, res) {
745
+ // console.log('syncAndReplaceTargets', req)
746
+ // console.log('payload', req.payload)
747
+
748
+ async function core() {
749
+
750
+ //token
751
+ let token = get(req, 'query.token', '')
752
+
753
+ //getTokenUserForSelf
754
+ let user = await getTokenUserForSelf(token)
755
+
756
+ //check
757
+ if (!iseobj(user)) {
758
+ console.log('token', token)
759
+ console.log('[API]syncAndReplaceTargets/check user: invalid user')
760
+ return Promise.reject(`token does not have permission`)
761
+ }
762
+
763
+ //parsePayload
764
+ let inp = await parsePayload(req, 'targets')
765
+
766
+ //syncAndReplaceRows
767
+ let r = await syncAndReplaceRows(inp, 'targets')
768
+
769
+ return r
770
+ }
771
+
772
+ //pm2resolve core
773
+ let r = await pm2resolve(core)()
774
+ // console.log('verifyIdentity', r)
775
+
776
+ return r
777
+ },
778
+ },
779
+ {
780
+ method: 'POST',
781
+ path: '/syncAndReplaceRuleGroups',
782
+ handler: async function (req, res) {
783
+ // console.log('syncAndReplaceRuleGroups', req)
784
+ // console.log('payload', req.payload)
785
+
786
+ async function core() {
787
+
788
+ //token
789
+ let token = get(req, 'query.token', '')
790
+
791
+ //getTokenUserForSelf
792
+ let user = await getTokenUserForSelf(token)
793
+
794
+ //check
795
+ if (!iseobj(user)) {
796
+ console.log('token', token)
797
+ console.log('[API]syncAndReplaceRuleGroups/check user: invalid user')
798
+ return Promise.reject(`token does not have permission`)
799
+ }
800
+
801
+ //parsePayload
802
+ let inp = await parsePayload(req, 'ruleGroups')
803
+
804
+ //syncAndReplaceRows
805
+ let r = await syncAndReplaceRows(inp, 'ruleGroups')
806
+
807
+ return r
808
+ }
809
+
810
+ //pm2resolve core
811
+ let r = await pm2resolve(core)()
812
+ // console.log('verifyIdentity', r)
813
+
498
814
  return r
499
815
  },
500
816
  },
@@ -0,0 +1,65 @@
1
+ import axios from 'axios'
2
+ import ltdtpick from 'wsemi/src/ltdtpick.mjs'
3
+ import genPm from 'wsemi/src/genPm.mjs'
4
+
5
+
6
+ async function provideRuleGroups(url, from, ruleGroups) {
7
+ //url: 指權限伺服器提供的調整ruleGroups網址, 例如 http://localhost:11006/syncAndReplaceRuleGroups
8
+ //from: 指ruleGroup來源
9
+
10
+ //pm
11
+ let pm = genPm()
12
+
13
+ //ks
14
+ let ks = [
15
+ 'id',
16
+ 'order',
17
+ 'name',
18
+ 'description',
19
+ 'from',
20
+ 'crules',
21
+ 'userId',
22
+ 'timeCreate',
23
+ 'userIdUpdate',
24
+ 'timeUpdate',
25
+ ]
26
+
27
+ //ltdtpick
28
+ ruleGroups = ltdtpick(ruleGroups, ks)
29
+
30
+ //rin
31
+ let rin = {
32
+ from,
33
+ ruleGroups,
34
+ }
35
+ // rin = JSON.stringify(rin)
36
+
37
+ //axios
38
+ await axios({
39
+ method: 'post',
40
+ url,
41
+ headers: { 'Content-Type': 'application/json; charset=utf-8' },
42
+ data: rin,
43
+ })
44
+ .then((res) => {
45
+ // console.log(res)
46
+ let r = {
47
+ msg: '成功傳輸RuleGroups清單',
48
+ res,
49
+ }
50
+ pm.resolve(r)
51
+ })
52
+ .catch((err) => {
53
+ // console.log(err)
54
+ let r = {
55
+ msg: '無法傳輸RuleGroups清單',
56
+ res: err,
57
+ }
58
+ pm.reject(r)
59
+ })
60
+
61
+ return pm
62
+ }
63
+
64
+
65
+ export default provideRuleGroups
@@ -0,0 +1,59 @@
1
+ import axios from 'axios'
2
+ import ltdtpick from 'wsemi/src/ltdtpick.mjs'
3
+ import genPm from 'wsemi/src/genPm.mjs'
4
+
5
+
6
+ async function provideTargets(url, from, targets) {
7
+ //url: 指權限伺服器提供的調整targets網址, 例如 http://localhost:11006/syncAndReplaceTargets
8
+ //from: 指target來源
9
+
10
+ //pm
11
+ let pm = genPm()
12
+
13
+ //ks
14
+ let ks = [
15
+ 'id',
16
+ 'order',
17
+ 'description',
18
+ 'from',
19
+ ]
20
+
21
+ //ltdtpick
22
+ targets = ltdtpick(targets, ks)
23
+
24
+ //rin
25
+ let rin = {
26
+ from,
27
+ targets,
28
+ }
29
+ // rin = JSON.stringify(rin)
30
+
31
+ //axios
32
+ await axios({
33
+ method: 'post',
34
+ url,
35
+ headers: { 'Content-Type': 'application/json; charset=utf-8' },
36
+ data: rin,
37
+ })
38
+ .then((res) => {
39
+ // console.log(res)
40
+ let r = {
41
+ msg: '成功傳輸Targets清單',
42
+ res,
43
+ }
44
+ pm.resolve(r)
45
+ })
46
+ .catch((err) => {
47
+ // console.log(err)
48
+ let r = {
49
+ msg: '無法傳輸Targets清單',
50
+ res: err,
51
+ }
52
+ pm.reject(r)
53
+ })
54
+
55
+ return pm
56
+ }
57
+
58
+
59
+ export default provideTargets
@@ -0,0 +1,68 @@
1
+ import axios from 'axios'
2
+ import ltdtpick from 'wsemi/src/ltdtpick.mjs'
3
+ import genPm from 'wsemi/src/genPm.mjs'
4
+
5
+
6
+ async function provideUsers(url, from, users) {
7
+ //url: 指權限伺服器提供的調整users網址, 例如 http://localhost:11006/syncAndReplaceUsers
8
+ //from: 指user來源
9
+
10
+ //pm
11
+ let pm = genPm()
12
+
13
+ //ks
14
+ let ks = [
15
+ 'id',
16
+ 'order',
17
+ 'name',
18
+ 'email',
19
+ 'description',
20
+ 'from',
21
+ 'ruleGroupsIds',
22
+ 'isAdmin',
23
+ 'userId',
24
+ 'timeCreate',
25
+ 'userIdUpdate',
26
+ 'timeUpdate',
27
+ 'isActive',
28
+ ]
29
+
30
+ //ltdtpick
31
+ users = ltdtpick(users, ks)
32
+
33
+ //rin
34
+ let rin = {
35
+ from,
36
+ users,
37
+ }
38
+ // rin = JSON.stringify(rin)
39
+
40
+ //axios
41
+ await axios({
42
+ method: 'post',
43
+ url,
44
+ headers: { 'Content-Type': 'application/json; charset=utf-8' },
45
+ data: rin,
46
+ })
47
+ .then((res) => {
48
+ // console.log(res)
49
+ let r = {
50
+ msg: '成功傳輸Users清單',
51
+ res,
52
+ }
53
+ pm.resolve(r)
54
+ })
55
+ .catch((err) => {
56
+ // console.log(err)
57
+ let r = {
58
+ msg: '無法傳輸Users清單',
59
+ res: err,
60
+ }
61
+ pm.reject(r)
62
+ })
63
+
64
+ return pm
65
+ }
66
+
67
+
68
+ export default provideUsers