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/docs/WWebPerm.html
CHANGED
|
@@ -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#
|
|
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
|
|
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>
|
package/docs/WWebPerm.mjs.html
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
312
|
-
let rs = await woItems.
|
|
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
|
|
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,
|
|
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
|
-
//
|
|
537
|
-
let
|
|
538
|
-
// console.log(
|
|
611
|
+
//rows
|
|
612
|
+
let rows = get(params, woName, [])
|
|
613
|
+
// console.log(woName, rows)
|
|
539
614
|
|
|
540
615
|
//check
|
|
541
|
-
if (!isearr(
|
|
616
|
+
if (!isearr(rows)) {
|
|
542
617
|
console.log('params', params)
|
|
543
|
-
console.log(
|
|
544
|
-
|
|
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
|
-
|
|
550
|
-
|
|
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[
|
|
634
|
+
await woItems[woName].delAll({ from })
|
|
555
635
|
|
|
556
636
|
//insert
|
|
557
|
-
let r = await woItems[
|
|
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
|
-
//
|
|
602
|
-
let
|
|
603
|
-
// console.log('
|
|
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
|
|
611
|
-
// console.log('getUserRules',
|
|
695
|
+
let kur = getUserRules(userFind, grups, pemis, targets)
|
|
696
|
+
// console.log('getUserRules', kur)
|
|
612
697
|
|
|
613
698
|
//check
|
|
614
|
-
if (!iseobj(
|
|
699
|
+
if (!iseobj(kur)) {
|
|
615
700
|
console.log('userId', userId)
|
|
616
|
-
console.log(`can not get
|
|
617
|
-
return Promise.reject(`can not get
|
|
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
|
-
|
|
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
|
|
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: '/
|
|
913
|
+
path: '/syncAndReplaceTargets',
|
|
832
914
|
handler: async function (req, res) {
|
|
833
|
-
// console.log('
|
|
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, '
|
|
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]
|
|
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, '
|
|
939
|
+
let inp = await parsePayload(req, 'targets')
|
|
855
940
|
|
|
856
941
|
//syncAndReplaceRows
|
|
857
|
-
let r = await syncAndReplaceRows(inp, '
|
|
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: '/
|
|
956
|
+
path: '/syncAndReplacePemis',
|
|
872
957
|
handler: async function (req, res) {
|
|
873
|
-
// console.log('
|
|
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, '
|
|
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]
|
|
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, '
|
|
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, '
|
|
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: '/
|
|
999
|
+
path: '/syncAndReplaceGrups',
|
|
912
1000
|
handler: async function (req, res) {
|
|
913
|
-
// console.log('
|
|
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, '
|
|
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]
|
|
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, '
|
|
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, '
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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