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/script.txt
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#node --experimental-modules
|
|
2
|
-
node --experimental-modules
|
|
1
|
+
#node --experimental-modules toolg/addVersion.mjs
|
|
2
|
+
node --experimental-modules toolg/modifyReadme.mjs
|
|
3
3
|
|
|
4
|
-
node --experimental-modules
|
|
4
|
+
node --experimental-modules toolg/cleanFolder.mjs
|
|
5
5
|
./node_modules/.bin/jsdoc -c .jsdoc
|
|
6
6
|
|
|
7
7
|
npm run build
|
|
8
8
|
|
|
9
|
-
node --experimental-modules
|
|
9
|
+
node --experimental-modules toolg/genEntry.mjs
|
|
10
10
|
|
|
11
|
-
node --experimental-modules
|
|
11
|
+
node --experimental-modules toolg/gDistRollup.mjs
|
|
12
12
|
|
|
13
13
|
git add . -A
|
|
14
14
|
git commit -m 'modify: '
|
package/server/WWebPerm.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import path from 'path'
|
|
2
2
|
import fs from 'fs'
|
|
3
|
-
import get from 'lodash-es/get.js'
|
|
4
|
-
import
|
|
5
|
-
import keys from 'lodash-es/keys.js'
|
|
3
|
+
import get from 'lodash-es/get.js'
|
|
4
|
+
import map from 'lodash-es/map.js'
|
|
5
|
+
import keys from 'lodash-es/keys.js'
|
|
6
|
+
import size from 'lodash-es/size.js'
|
|
6
7
|
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
7
8
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
8
9
|
import ispint from 'wsemi/src/ispint.mjs'
|
|
@@ -18,6 +19,8 @@ import pm2resolve from 'wsemi/src/pm2resolve.mjs'
|
|
|
18
19
|
import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
|
|
19
20
|
import fsIsFile from 'wsemi/src/fsIsFile.mjs'
|
|
20
21
|
import replace from 'wsemi/src/replace.mjs'
|
|
22
|
+
import ltdtDiffByKey from 'wsemi/src/ltdtDiffByKey.mjs'
|
|
23
|
+
import ltdtmapping from 'wsemi/src/ltdtmapping.mjs'
|
|
21
24
|
import WServHapiServer from 'w-serv-hapi/src/WServHapiServer.mjs'
|
|
22
25
|
import WServOrm from 'w-serv-orm/src/WServOrm.mjs'
|
|
23
26
|
import ds from '../src/schema/index.mjs'
|
|
@@ -254,26 +257,102 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
254
257
|
|
|
255
258
|
|
|
256
259
|
//getUsersList
|
|
257
|
-
let getUsersList = async (userId
|
|
260
|
+
let getUsersList = async (userId) => {
|
|
258
261
|
let rs = await woItems.users.select() //isActive為y或n都需要提供, 給前端編輯
|
|
259
262
|
return rs
|
|
260
263
|
}
|
|
261
264
|
|
|
262
265
|
|
|
263
266
|
//getRuleGroupsList
|
|
264
|
-
let getRuleGroupsList = async (userId
|
|
265
|
-
let rs = await woItems.
|
|
267
|
+
let getRuleGroupsList = async (userId) => {
|
|
268
|
+
let rs = await woItems.pemis.select()
|
|
266
269
|
return rs
|
|
267
270
|
}
|
|
268
271
|
|
|
269
272
|
|
|
270
273
|
//getTargetsList
|
|
271
|
-
let getTargetsList = async (userId
|
|
274
|
+
let getTargetsList = async (userId) => {
|
|
272
275
|
let rs = await woItems.targets.select()
|
|
273
276
|
return rs
|
|
274
277
|
}
|
|
275
278
|
|
|
276
279
|
|
|
280
|
+
//updateTabItems
|
|
281
|
+
let updateTabItems = async (woName, userId, rows, keyDetect) => {
|
|
282
|
+
// console.log('updateTabItems', woName, userId, rows.length, keyDetect)
|
|
283
|
+
|
|
284
|
+
//ltdtmapping
|
|
285
|
+
rows = ltdtmapping(rows, ds[woName].keys)
|
|
286
|
+
// console.log('ltdtmapping rows', rows)
|
|
287
|
+
|
|
288
|
+
//重給order
|
|
289
|
+
rows = map(rows, (r, k) => {
|
|
290
|
+
r.order = k + 1
|
|
291
|
+
return r
|
|
292
|
+
})
|
|
293
|
+
|
|
294
|
+
//ltdtDiffByKey
|
|
295
|
+
let ltdtOld = await woItems[woName].select()
|
|
296
|
+
let ltdtNew = rows
|
|
297
|
+
let r = ltdtDiffByKey(ltdtOld, ltdtNew, keyDetect)
|
|
298
|
+
// console.log('ltdtDiffByKey r', r)
|
|
299
|
+
|
|
300
|
+
//del
|
|
301
|
+
if (size(r.del) > 0) {
|
|
302
|
+
await procOrm(userId, woName, 'del', r.del) //須使用procOrm才有辦法自動給予相關欄位
|
|
303
|
+
// .catch((err) => {
|
|
304
|
+
// console.log('woItems[woName].del err', err)
|
|
305
|
+
// })
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
//add
|
|
309
|
+
if (size(r.add) > 0) {
|
|
310
|
+
await procOrm(userId, woName, 'insert', r.add) //須使用procOrm才有辦法自動給予相關欄位
|
|
311
|
+
// .catch((err) => {
|
|
312
|
+
// console.log('woItems[woName].insert err', err)
|
|
313
|
+
// })
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
//diff
|
|
317
|
+
if (size(r.diff) > 0) {
|
|
318
|
+
await procOrm(userId, woName, 'save', r.diff) //須使用procOrm才有辦法自動給予相關欄位
|
|
319
|
+
// .catch((err) => {
|
|
320
|
+
// console.log('woItems[woName].save err', err)
|
|
321
|
+
// })
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
return ltdtNew
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
//updateTargets
|
|
329
|
+
let updateTargets = async (userId, rows) => {
|
|
330
|
+
rows = await updateTabItems('targets', userId, rows, 'id')
|
|
331
|
+
return rows
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
//updatePemis
|
|
336
|
+
let updatePemis = async (userId, rows) => {
|
|
337
|
+
rows = await updateTabItems('pemis', userId, rows, 'name')
|
|
338
|
+
return rows
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
//updateGrups
|
|
343
|
+
let updateGrups = async (userId, rows) => {
|
|
344
|
+
rows = await updateTabItems('grups', userId, rows, 'name')
|
|
345
|
+
return rows
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
//updateUsers
|
|
350
|
+
let updateUsers = async (userId, rows) => {
|
|
351
|
+
rows = await updateTabItems('users', userId, rows, 'id')
|
|
352
|
+
return rows
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
|
|
277
356
|
//parseToken
|
|
278
357
|
let parseToken = (req) => {
|
|
279
358
|
|
|
@@ -446,12 +525,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
446
525
|
return Promise.reject(`invalid from from inp`)
|
|
447
526
|
}
|
|
448
527
|
|
|
449
|
-
|
|
450
528
|
//vs
|
|
451
529
|
let vs = get(inp, key, [])
|
|
452
|
-
//users
|
|
453
|
-
//targets
|
|
454
|
-
//ruleGroups
|
|
455
530
|
|
|
456
531
|
//check
|
|
457
532
|
if (!isearr(vs)) {
|
|
@@ -472,7 +547,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
472
547
|
|
|
473
548
|
|
|
474
549
|
//syncAndReplaceRows
|
|
475
|
-
let syncAndReplaceRows = async (params,
|
|
550
|
+
let syncAndReplaceRows = async (userId, params, woName) => {
|
|
476
551
|
|
|
477
552
|
//from
|
|
478
553
|
let from = get(params, 'from', '')
|
|
@@ -486,28 +561,34 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
486
561
|
return Promise.reject(`invalid from`)
|
|
487
562
|
}
|
|
488
563
|
|
|
489
|
-
//
|
|
490
|
-
let
|
|
491
|
-
// console.log(
|
|
564
|
+
//rows
|
|
565
|
+
let rows = get(params, woName, [])
|
|
566
|
+
// console.log(woName, rows)
|
|
492
567
|
|
|
493
568
|
//check
|
|
494
|
-
if (!isearr(
|
|
569
|
+
if (!isearr(rows)) {
|
|
495
570
|
console.log('params', params)
|
|
496
|
-
console.log(
|
|
497
|
-
|
|
498
|
-
return Promise.reject(`invalid ${key}`)
|
|
571
|
+
console.log('woName', woName)
|
|
572
|
+
return Promise.reject(`invalid ${woName}`)
|
|
499
573
|
}
|
|
500
574
|
|
|
501
575
|
//save from
|
|
502
|
-
|
|
503
|
-
|
|
576
|
+
rows = map(rows, (v, k) => {
|
|
577
|
+
// v.order = k + 1 //order大部分由外部給予, 不能複寫
|
|
578
|
+
v.from = from
|
|
579
|
+
return v
|
|
504
580
|
})
|
|
505
581
|
|
|
582
|
+
//ltdtmapping
|
|
583
|
+
rows = ltdtmapping(rows, ds[woName].keys)
|
|
584
|
+
// console.log('ltdtmapping rows', rows)
|
|
585
|
+
|
|
506
586
|
//delAll from
|
|
507
|
-
await woItems[
|
|
587
|
+
await woItems[woName].delAll({ from })
|
|
508
588
|
|
|
509
589
|
//insert
|
|
510
|
-
let r = await woItems[
|
|
590
|
+
// let r = await woItems[woName].insert(rows)
|
|
591
|
+
let r = await procOrm(userId, woName, 'insert', rows) //須使用procOrm才有辦法自動給予相關欄位
|
|
511
592
|
|
|
512
593
|
return r
|
|
513
594
|
}
|
|
@@ -544,38 +625,39 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
544
625
|
}
|
|
545
626
|
|
|
546
627
|
|
|
547
|
-
//getGenUserAndRulesByUserId
|
|
628
|
+
//getGenUserAndRulesByUserId bbb
|
|
548
629
|
let getGenUserAndRulesByUserId = async (userId) => {
|
|
549
630
|
|
|
550
631
|
//userFind
|
|
551
632
|
let userFind = await getGenUserByUserId(userId)
|
|
552
633
|
// console.log('userFind', userFind)
|
|
553
634
|
|
|
554
|
-
//
|
|
555
|
-
let
|
|
556
|
-
// console.log('
|
|
635
|
+
//grups
|
|
636
|
+
let grups = await woItems.grups.select()
|
|
637
|
+
// console.log('grups', grups)
|
|
638
|
+
|
|
639
|
+
//pemis
|
|
640
|
+
let pemis = await woItems.pemis.select()
|
|
641
|
+
// console.log('pemis', pemis)
|
|
557
642
|
|
|
558
643
|
//targets
|
|
559
644
|
let targets = await woItems.targets.select()
|
|
560
645
|
// console.log('targets', targets)
|
|
561
646
|
|
|
562
647
|
//getUserRules
|
|
563
|
-
let
|
|
564
|
-
// console.log('getUserRules',
|
|
648
|
+
let kur = getUserRules(userFind, grups, pemis, targets)
|
|
649
|
+
// console.log('getUserRules', kur)
|
|
565
650
|
|
|
566
651
|
//check
|
|
567
|
-
if (!iseobj(
|
|
652
|
+
if (!iseobj(kur)) {
|
|
568
653
|
console.log('userId', userId)
|
|
569
|
-
console.log(`can not get
|
|
570
|
-
return Promise.reject(`can not get
|
|
654
|
+
console.log(`can not get rules of user`)
|
|
655
|
+
return Promise.reject(`can not get rules of user`)
|
|
571
656
|
}
|
|
572
657
|
|
|
573
658
|
return {
|
|
574
|
-
user:
|
|
575
|
-
|
|
576
|
-
ruleGroupsNames: urs.ruleGroupsNames, //ruleGroupsNames併入user內顯示
|
|
577
|
-
},
|
|
578
|
-
rules: urs.rules,
|
|
659
|
+
user: userFind,
|
|
660
|
+
kur,
|
|
579
661
|
}
|
|
580
662
|
}
|
|
581
663
|
|
|
@@ -676,7 +758,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
676
758
|
// console.log('getPerm', req)
|
|
677
759
|
|
|
678
760
|
async function core() {
|
|
679
|
-
//提供對象為node與browser使用者, node
|
|
761
|
+
//提供對象為node與browser使用者, node通常也為其他系統之browser使用者因須驗證而由node轉發, 皆須先檢測token是否有效, 再依照token取得使用者資訊物件, 再由其userId查詢回傳該使用者之權限資訊物件
|
|
680
762
|
|
|
681
763
|
//parseToken
|
|
682
764
|
let token = parseToken(req)
|
|
@@ -781,10 +863,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
781
863
|
},
|
|
782
864
|
{
|
|
783
865
|
method: 'POST',
|
|
784
|
-
path: '/
|
|
866
|
+
path: '/syncAndReplaceTargets',
|
|
785
867
|
handler: async function (req, res) {
|
|
786
|
-
// console.log('
|
|
787
|
-
// console.log('payload', req.payload)
|
|
868
|
+
// console.log('syncAndReplaceTargets', req)
|
|
869
|
+
// console.log('syncAndReplaceTargets payload', req.payload)
|
|
788
870
|
|
|
789
871
|
async function core() {
|
|
790
872
|
//提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
|
|
@@ -793,21 +875,24 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
793
875
|
let token = get(req, 'query.token', '')
|
|
794
876
|
|
|
795
877
|
//getAndVerifyAppTokenUser
|
|
796
|
-
let user = await getAndVerifyAppTokenUser(token, '
|
|
878
|
+
let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceTargets')
|
|
797
879
|
|
|
798
880
|
//check
|
|
799
881
|
if (!iseobj(user)) {
|
|
800
882
|
console.log('token', token)
|
|
801
|
-
console.log('[API]
|
|
883
|
+
console.log('[API]syncAndReplaceTargets/check user: invalid user')
|
|
802
884
|
console.log(`token does not have permission`)
|
|
803
885
|
return Promise.reject(`token does not have permission`)
|
|
804
886
|
}
|
|
805
887
|
|
|
888
|
+
//userId
|
|
889
|
+
let userId = get(user, 'id', '')
|
|
890
|
+
|
|
806
891
|
//parsePayload
|
|
807
|
-
let inp = await parsePayload(req, '
|
|
892
|
+
let inp = await parsePayload(req, 'targets')
|
|
808
893
|
|
|
809
894
|
//syncAndReplaceRows
|
|
810
|
-
let r = await syncAndReplaceRows(inp, '
|
|
895
|
+
let r = await syncAndReplaceRows(userId, inp, 'targets')
|
|
811
896
|
|
|
812
897
|
return r
|
|
813
898
|
}
|
|
@@ -821,10 +906,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
821
906
|
},
|
|
822
907
|
{
|
|
823
908
|
method: 'POST',
|
|
824
|
-
path: '/
|
|
909
|
+
path: '/syncAndReplacePemis',
|
|
825
910
|
handler: async function (req, res) {
|
|
826
|
-
// console.log('
|
|
827
|
-
// console.log('payload', req.payload)
|
|
911
|
+
// console.log('syncAndReplacePemis', req)
|
|
912
|
+
// console.log('syncAndReplacePemis payload', req.payload)
|
|
828
913
|
|
|
829
914
|
async function core() {
|
|
830
915
|
//提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
|
|
@@ -833,21 +918,24 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
833
918
|
let token = get(req, 'query.token', '')
|
|
834
919
|
|
|
835
920
|
//getAndVerifyAppTokenUser
|
|
836
|
-
let user = await getAndVerifyAppTokenUser(token, '
|
|
921
|
+
let user = await getAndVerifyAppTokenUser(token, 'syncAndReplacePemis')
|
|
837
922
|
|
|
838
923
|
//check
|
|
839
924
|
if (!iseobj(user)) {
|
|
840
925
|
console.log('token', token)
|
|
841
|
-
console.log('[API]
|
|
926
|
+
console.log('[API]syncAndReplacePemis/check user: invalid user')
|
|
842
927
|
console.log(`token does not have permission`)
|
|
843
928
|
return Promise.reject(`token does not have permission`)
|
|
844
929
|
}
|
|
845
930
|
|
|
846
931
|
//parsePayload
|
|
847
|
-
let inp = await parsePayload(req, '
|
|
932
|
+
let inp = await parsePayload(req, 'pemis')
|
|
933
|
+
|
|
934
|
+
//userId
|
|
935
|
+
let userId = get(user, 'id', '')
|
|
848
936
|
|
|
849
937
|
//syncAndReplaceRows
|
|
850
|
-
let r = await syncAndReplaceRows(inp, '
|
|
938
|
+
let r = await syncAndReplaceRows(userId, inp, 'pemis')
|
|
851
939
|
|
|
852
940
|
return r
|
|
853
941
|
}
|
|
@@ -861,10 +949,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
861
949
|
},
|
|
862
950
|
{
|
|
863
951
|
method: 'POST',
|
|
864
|
-
path: '/
|
|
952
|
+
path: '/syncAndReplaceGrups',
|
|
865
953
|
handler: async function (req, res) {
|
|
866
|
-
// console.log('
|
|
867
|
-
// console.log('payload', req.payload)
|
|
954
|
+
// console.log('syncAndReplaceGrups', req)
|
|
955
|
+
// console.log('syncAndReplaceGrups payload', req.payload)
|
|
868
956
|
|
|
869
957
|
async function core() {
|
|
870
958
|
//提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
|
|
@@ -873,21 +961,67 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
873
961
|
let token = get(req, 'query.token', '')
|
|
874
962
|
|
|
875
963
|
//getAndVerifyAppTokenUser
|
|
876
|
-
let user = await getAndVerifyAppTokenUser(token, '
|
|
964
|
+
let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceGrups')
|
|
877
965
|
|
|
878
966
|
//check
|
|
879
967
|
if (!iseobj(user)) {
|
|
880
968
|
console.log('token', token)
|
|
881
|
-
console.log('[API]
|
|
969
|
+
console.log('[API]syncAndReplaceGrups/check user: invalid user')
|
|
882
970
|
console.log(`token does not have permission`)
|
|
883
971
|
return Promise.reject(`token does not have permission`)
|
|
884
972
|
}
|
|
885
973
|
|
|
886
974
|
//parsePayload
|
|
887
|
-
let inp = await parsePayload(req, '
|
|
975
|
+
let inp = await parsePayload(req, 'grups')
|
|
976
|
+
|
|
977
|
+
//userId
|
|
978
|
+
let userId = get(user, 'id', '')
|
|
888
979
|
|
|
889
980
|
//syncAndReplaceRows
|
|
890
|
-
let r = await syncAndReplaceRows(inp, '
|
|
981
|
+
let r = await syncAndReplaceRows(userId, inp, 'grups')
|
|
982
|
+
|
|
983
|
+
return r
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
//pm2resolve core
|
|
987
|
+
let r = await pm2resolve(core)()
|
|
988
|
+
// console.log('verifyIdentity', r)
|
|
989
|
+
|
|
990
|
+
return r
|
|
991
|
+
},
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
method: 'POST',
|
|
995
|
+
path: '/syncAndReplaceUsers',
|
|
996
|
+
handler: async function (req, res) {
|
|
997
|
+
// console.log('syncAndReplaceUsers', req)
|
|
998
|
+
// console.log('syncAndReplaceUsers payload', req.payload)
|
|
999
|
+
|
|
1000
|
+
async function core() {
|
|
1001
|
+
//提供對象為node使用者, 須為系統管理者, 須先檢測token是否有效, 再進行數據變更
|
|
1002
|
+
|
|
1003
|
+
//token
|
|
1004
|
+
let token = get(req, 'query.token', '')
|
|
1005
|
+
|
|
1006
|
+
//getAndVerifyAppTokenUser
|
|
1007
|
+
let user = await getAndVerifyAppTokenUser(token, 'syncAndReplaceUsers')
|
|
1008
|
+
|
|
1009
|
+
//check
|
|
1010
|
+
if (!iseobj(user)) {
|
|
1011
|
+
console.log('token', token)
|
|
1012
|
+
console.log('[API]syncAndReplaceUsers/check user: invalid user')
|
|
1013
|
+
console.log(`token does not have permission`)
|
|
1014
|
+
return Promise.reject(`token does not have permission`)
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
//parsePayload
|
|
1018
|
+
let inp = await parsePayload(req, 'users')
|
|
1019
|
+
|
|
1020
|
+
//userId
|
|
1021
|
+
let userId = get(user, 'id', '')
|
|
1022
|
+
|
|
1023
|
+
//syncAndReplaceRows
|
|
1024
|
+
let r = await syncAndReplaceRows(userId, inp, 'users')
|
|
891
1025
|
|
|
892
1026
|
return r
|
|
893
1027
|
}
|
|
@@ -916,7 +1050,15 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
916
1050
|
pathStaticFiles,
|
|
917
1051
|
apis,
|
|
918
1052
|
getUserIDFromToken: async (token) => { //可使用async或sync函數
|
|
919
|
-
|
|
1053
|
+
// console.log('getUserIDFromToken', token)
|
|
1054
|
+
let user = await getUserByToken(token)
|
|
1055
|
+
let userId = get(user, 'id', '')
|
|
1056
|
+
if (!isestr(userId)) {
|
|
1057
|
+
console.log('token', token)
|
|
1058
|
+
console.log('userId', userId)
|
|
1059
|
+
return Promise.reject(`can not find user.id`)
|
|
1060
|
+
}
|
|
1061
|
+
return userId
|
|
920
1062
|
},
|
|
921
1063
|
useDbORM: true,
|
|
922
1064
|
dbORMs: woItems,
|
|
@@ -926,10 +1068,16 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyBrowserUser, verifyAppUse
|
|
|
926
1068
|
tableNamesSync,
|
|
927
1069
|
extFuncs: { //接收參數第1個為userId, 之後才是前端給予參數
|
|
928
1070
|
getWebInfor,
|
|
929
|
-
|
|
930
|
-
getRuleGroupsList,
|
|
1071
|
+
|
|
931
1072
|
getTargetsList,
|
|
932
|
-
|
|
1073
|
+
getRuleGroupsList,
|
|
1074
|
+
getUsersList,
|
|
1075
|
+
|
|
1076
|
+
updateTargets,
|
|
1077
|
+
updatePemis,
|
|
1078
|
+
updateGrups,
|
|
1079
|
+
updateUsers,
|
|
1080
|
+
|
|
933
1081
|
},
|
|
934
1082
|
hookBefores: null,
|
|
935
1083
|
hookAfters: null,
|
|
@@ -0,0 +1,64 @@
|
|
|
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 provideGrups(url, from, grups) {
|
|
7
|
+
//url: 指權限伺服器提供的調整grups網址, 例如 http://localhost:11006/syncAndReplaceGrups
|
|
8
|
+
//from: 指grups來源
|
|
9
|
+
|
|
10
|
+
//pm
|
|
11
|
+
let pm = genPm()
|
|
12
|
+
|
|
13
|
+
//ks
|
|
14
|
+
let ks = [
|
|
15
|
+
// 'id',
|
|
16
|
+
'order', //order大部分由外部給予, 得要開啟
|
|
17
|
+
'name',
|
|
18
|
+
'description',
|
|
19
|
+
'cpemis',
|
|
20
|
+
// 'userId',
|
|
21
|
+
// 'timeCreate',
|
|
22
|
+
// 'userIdUpdate',
|
|
23
|
+
// 'timeUpdate',
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
//ltdtpick
|
|
27
|
+
grups = ltdtpick(grups, ks)
|
|
28
|
+
|
|
29
|
+
//rin
|
|
30
|
+
let rin = {
|
|
31
|
+
from,
|
|
32
|
+
grups,
|
|
33
|
+
}
|
|
34
|
+
// rin = JSON.stringify(rin)
|
|
35
|
+
|
|
36
|
+
//axios
|
|
37
|
+
await axios({
|
|
38
|
+
method: 'post',
|
|
39
|
+
url,
|
|
40
|
+
headers: { 'Content-Type': 'application/json; charset=utf-8' },
|
|
41
|
+
data: rin,
|
|
42
|
+
})
|
|
43
|
+
.then((res) => {
|
|
44
|
+
// console.log(res)
|
|
45
|
+
let r = {
|
|
46
|
+
msg: '成功傳輸grups清單',
|
|
47
|
+
res,
|
|
48
|
+
}
|
|
49
|
+
pm.resolve(r)
|
|
50
|
+
})
|
|
51
|
+
.catch((err) => {
|
|
52
|
+
// console.log(err)
|
|
53
|
+
let r = {
|
|
54
|
+
msg: '無法傳輸grups清單',
|
|
55
|
+
res: err,
|
|
56
|
+
}
|
|
57
|
+
pm.reject(r)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
return pm
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
export default provideGrups
|
|
@@ -3,34 +3,33 @@ import ltdtpick from 'wsemi/src/ltdtpick.mjs'
|
|
|
3
3
|
import genPm from 'wsemi/src/genPm.mjs'
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
async function
|
|
7
|
-
//url: 指權限伺服器提供的調整
|
|
8
|
-
//from: 指
|
|
6
|
+
async function providePemis(url, from, pemis) {
|
|
7
|
+
//url: 指權限伺服器提供的調整pemis網址, 例如 http://localhost:11006/syncAndReplacePemis
|
|
8
|
+
//from: 指pemis來源
|
|
9
9
|
|
|
10
10
|
//pm
|
|
11
11
|
let pm = genPm()
|
|
12
12
|
|
|
13
13
|
//ks
|
|
14
14
|
let ks = [
|
|
15
|
-
'id',
|
|
16
|
-
'order',
|
|
15
|
+
// 'id',
|
|
16
|
+
'order', //order大部分由外部給予, 得要開啟
|
|
17
17
|
'name',
|
|
18
18
|
'description',
|
|
19
|
-
'from',
|
|
20
19
|
'crules',
|
|
21
|
-
'userId',
|
|
22
|
-
'timeCreate',
|
|
23
|
-
'userIdUpdate',
|
|
24
|
-
'timeUpdate',
|
|
20
|
+
// 'userId',
|
|
21
|
+
// 'timeCreate',
|
|
22
|
+
// 'userIdUpdate',
|
|
23
|
+
// 'timeUpdate',
|
|
25
24
|
]
|
|
26
25
|
|
|
27
26
|
//ltdtpick
|
|
28
|
-
|
|
27
|
+
pemis = ltdtpick(pemis, ks)
|
|
29
28
|
|
|
30
29
|
//rin
|
|
31
30
|
let rin = {
|
|
32
31
|
from,
|
|
33
|
-
|
|
32
|
+
pemis,
|
|
34
33
|
}
|
|
35
34
|
// rin = JSON.stringify(rin)
|
|
36
35
|
|
|
@@ -44,7 +43,7 @@ async function provideRuleGroups(url, from, ruleGroups) {
|
|
|
44
43
|
.then((res) => {
|
|
45
44
|
// console.log(res)
|
|
46
45
|
let r = {
|
|
47
|
-
msg: '成功傳輸
|
|
46
|
+
msg: '成功傳輸pemis清單',
|
|
48
47
|
res,
|
|
49
48
|
}
|
|
50
49
|
pm.resolve(r)
|
|
@@ -52,7 +51,7 @@ async function provideRuleGroups(url, from, ruleGroups) {
|
|
|
52
51
|
.catch((err) => {
|
|
53
52
|
// console.log(err)
|
|
54
53
|
let r = {
|
|
55
|
-
msg: '無法傳輸
|
|
54
|
+
msg: '無法傳輸pemis清單',
|
|
56
55
|
res: err,
|
|
57
56
|
}
|
|
58
57
|
pm.reject(r)
|
|
@@ -62,4 +61,4 @@ async function provideRuleGroups(url, from, ruleGroups) {
|
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
|
|
65
|
-
export default
|
|
64
|
+
export default providePemis
|
|
@@ -5,7 +5,7 @@ import genPm from 'wsemi/src/genPm.mjs'
|
|
|
5
5
|
|
|
6
6
|
async function provideTargets(url, from, targets) {
|
|
7
7
|
//url: 指權限伺服器提供的調整targets網址, 例如 http://localhost:11006/syncAndReplaceTargets
|
|
8
|
-
//from: 指
|
|
8
|
+
//from: 指targets來源
|
|
9
9
|
|
|
10
10
|
//pm
|
|
11
11
|
let pm = genPm()
|
|
@@ -13,9 +13,12 @@ async function provideTargets(url, from, targets) {
|
|
|
13
13
|
//ks
|
|
14
14
|
let ks = [
|
|
15
15
|
'id',
|
|
16
|
-
'order',
|
|
16
|
+
'order', //order大部分由外部給予, 得要開啟
|
|
17
17
|
'description',
|
|
18
|
-
'
|
|
18
|
+
// 'userId',
|
|
19
|
+
// 'timeCreate',
|
|
20
|
+
// 'userIdUpdate',
|
|
21
|
+
// 'timeUpdate',
|
|
19
22
|
]
|
|
20
23
|
|
|
21
24
|
//ltdtpick
|
|
@@ -38,7 +41,7 @@ async function provideTargets(url, from, targets) {
|
|
|
38
41
|
.then((res) => {
|
|
39
42
|
// console.log(res)
|
|
40
43
|
let r = {
|
|
41
|
-
msg: '成功傳輸
|
|
44
|
+
msg: '成功傳輸targets清單',
|
|
42
45
|
res,
|
|
43
46
|
}
|
|
44
47
|
pm.resolve(r)
|
|
@@ -46,7 +49,7 @@ async function provideTargets(url, from, targets) {
|
|
|
46
49
|
.catch((err) => {
|
|
47
50
|
// console.log(err)
|
|
48
51
|
let r = {
|
|
49
|
-
msg: '無法傳輸
|
|
52
|
+
msg: '無法傳輸targets清單',
|
|
50
53
|
res: err,
|
|
51
54
|
}
|
|
52
55
|
pm.reject(r)
|