w-web-api 1.0.41 → 1.0.43
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/db/wapis/apis/data.mdb +0 -0
- package/db/wapis/apis/lock.mdb +0 -0
- package/dist/w-web-api.umd.js +2 -2
- package/dist/w-web-api.umd.js.map +1 -1
- package/docs/WWebApi.html +2 -2
- package/docs/WWebApi.mjs.html +268 -171
- package/docs/index.html +1 -1
- package/g.provideApis.mjs +51 -0
- package/package.json +1 -1
- package/server/WWebApi.mjs +267 -170
- package/server/provideTabs.mjs +89 -0
- package/tableTags.json +1 -1
- package/server/provideApis.mjs +0 -74
package/docs/WWebApi.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="WWebApi.mjs.html">WWebApi.mjs</a>, <a href="WWebApi.mjs.html#
|
|
83
|
+
<a href="WWebApi.mjs.html">WWebApi.mjs</a>, <a href="WWebApi.mjs.html#line131">line 131</a>
|
|
84
84
|
</li></ul></dd>
|
|
85
85
|
|
|
86
86
|
|
|
@@ -885,7 +885,7 @@
|
|
|
885
885
|
<br class="clear">
|
|
886
886
|
|
|
887
887
|
<footer>
|
|
888
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
888
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sun Jul 20 2025 22:09:28 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
889
889
|
</footer>
|
|
890
890
|
|
|
891
891
|
<script>prettyPrint();</script>
|
package/docs/WWebApi.mjs.html
CHANGED
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
import fs from 'fs'
|
|
50
50
|
import get from 'lodash-es/get.js'
|
|
51
51
|
import each from 'lodash-es/each.js'
|
|
52
|
+
import map from 'lodash-es/map.js'
|
|
52
53
|
import keys from 'lodash-es/keys.js'
|
|
53
54
|
import j2o from 'wsemi/src/j2o.mjs'
|
|
54
55
|
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
@@ -65,6 +66,7 @@ import strright from 'wsemi/src/strright.mjs'
|
|
|
65
66
|
import strdelright from 'wsemi/src/strdelright.mjs'
|
|
66
67
|
import pm2resolve from 'wsemi/src/pm2resolve.mjs'
|
|
67
68
|
import b642str from 'wsemi/src/b642str.mjs'
|
|
69
|
+
import ltdtmapping from 'wsemi/src/ltdtmapping.mjs'
|
|
68
70
|
import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
|
|
69
71
|
import fsIsFile from 'wsemi/src/fsIsFile.mjs'
|
|
70
72
|
import replace from 'wsemi/src/replace.mjs'
|
|
@@ -363,175 +365,200 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
363
365
|
}
|
|
364
366
|
|
|
365
367
|
|
|
366
|
-
//
|
|
367
|
-
let
|
|
368
|
+
//getAndVerifyClientUser
|
|
369
|
+
let getAndVerifyClientUser = async (token, from = '') => {
|
|
370
|
+
//基於token查找client使用者, 會基於外部getUserByToken以及perm內部users進行查找並比對
|
|
368
371
|
|
|
369
372
|
//getTokenUser
|
|
370
|
-
let
|
|
373
|
+
let user = await getTokenUser(token)
|
|
371
374
|
|
|
372
375
|
//verifyClientUser
|
|
373
|
-
let b = verifyClientUser(
|
|
376
|
+
let b = verifyClientUser(user, from)
|
|
374
377
|
if (ispm(b)) {
|
|
375
378
|
b = await b
|
|
376
379
|
}
|
|
377
380
|
|
|
378
381
|
//check
|
|
379
382
|
if (!b) {
|
|
380
|
-
console.log('
|
|
383
|
+
console.log('user', user)
|
|
381
384
|
console.log(`user does not have permission`)
|
|
382
385
|
return Promise.reject(`user does not have permission`)
|
|
383
386
|
}
|
|
384
387
|
|
|
385
|
-
return
|
|
388
|
+
return user
|
|
386
389
|
}
|
|
387
390
|
|
|
388
391
|
|
|
389
|
-
//
|
|
390
|
-
let
|
|
392
|
+
//getAndVerifyAppUser
|
|
393
|
+
let getAndVerifyAppUser = async (token, from = '') => {
|
|
394
|
+
//基於token查找app使用者, 會基於外部getUserByToken進行查找, 故只要getUserByToken提供使用者即可, 可支援getUserByToken給予針對應用程式所產生之虛擬使用者
|
|
391
395
|
|
|
392
|
-
//
|
|
393
|
-
let
|
|
396
|
+
//user
|
|
397
|
+
let user = null
|
|
398
|
+
if (isestr(token)) {
|
|
399
|
+
user = getUserByToken(token)
|
|
400
|
+
if (ispm(user)) {
|
|
401
|
+
user = await user
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
// console.log('user', user)
|
|
405
|
+
|
|
406
|
+
//check
|
|
407
|
+
if (!iseobj(user)) {
|
|
408
|
+
console.log(`token`, token)
|
|
409
|
+
console.log(`can not find the user from token`)
|
|
410
|
+
return Promise.reject(`can not find the user from token`)
|
|
411
|
+
}
|
|
394
412
|
|
|
395
413
|
//verifyAppUser
|
|
396
|
-
let b = verifyAppUser(
|
|
414
|
+
let b = verifyAppUser(user, from)
|
|
397
415
|
if (ispm(b)) {
|
|
398
416
|
b = await b
|
|
399
417
|
}
|
|
400
418
|
|
|
401
419
|
//check
|
|
402
420
|
if (!b) {
|
|
403
|
-
console.log('
|
|
421
|
+
console.log('user', user)
|
|
404
422
|
console.log(`user does not have permission`)
|
|
405
423
|
return Promise.reject(`user does not have permission`)
|
|
406
424
|
}
|
|
407
425
|
|
|
408
|
-
return
|
|
426
|
+
return user
|
|
409
427
|
}
|
|
410
428
|
|
|
411
429
|
|
|
412
|
-
//getAPIsList
|
|
413
|
-
let getAPIsList = async (query = {}) => {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
}
|
|
430
|
+
// //getAPIsList
|
|
431
|
+
// let getAPIsList = async (query = {}) => {
|
|
432
|
+
// let rs = await woItems.apis.select(query)
|
|
433
|
+
// return rs
|
|
434
|
+
// }
|
|
417
435
|
|
|
418
436
|
|
|
419
437
|
//parsePayload
|
|
420
438
|
let parsePayload = async (req) => {
|
|
421
439
|
|
|
422
|
-
//
|
|
423
|
-
let
|
|
440
|
+
//payload
|
|
441
|
+
let payload = get(req, 'payload')
|
|
424
442
|
|
|
425
443
|
//to obj
|
|
426
|
-
if (isestr(
|
|
427
|
-
|
|
444
|
+
if (isestr(payload)) {
|
|
445
|
+
payload = j2o(payload)
|
|
428
446
|
}
|
|
429
447
|
|
|
430
448
|
//check
|
|
431
|
-
if (!iseobj(
|
|
432
|
-
console.log('
|
|
433
|
-
console.log(`invalid
|
|
434
|
-
return Promise.reject(`invalid
|
|
449
|
+
if (!iseobj(payload)) {
|
|
450
|
+
console.log('payload', payload)
|
|
451
|
+
console.log(`invalid payload in req`)
|
|
452
|
+
return Promise.reject(`invalid payload in req`)
|
|
435
453
|
}
|
|
436
454
|
|
|
437
455
|
//group
|
|
438
|
-
let group = get(
|
|
456
|
+
let group = get(payload, 'group', '')
|
|
439
457
|
|
|
440
458
|
//check
|
|
441
459
|
if (!isestr(group)) {
|
|
442
|
-
console.log('
|
|
443
|
-
console.log(
|
|
444
|
-
|
|
445
|
-
return Promise.reject(`invalid group from inp`)
|
|
460
|
+
console.log('payload', payload)
|
|
461
|
+
console.log(`invalid group in payload`)
|
|
462
|
+
return Promise.reject(`invalid group in payload`)
|
|
446
463
|
}
|
|
447
464
|
|
|
448
|
-
//
|
|
449
|
-
let
|
|
465
|
+
//rows
|
|
466
|
+
let rows = get(payload, 'rows', [])
|
|
450
467
|
|
|
451
468
|
//check
|
|
452
|
-
if (!isearr(
|
|
453
|
-
console.log('
|
|
454
|
-
console.log(
|
|
455
|
-
|
|
456
|
-
return Promise.reject(`invalid apis from inp`)
|
|
469
|
+
if (!isearr(rows)) {
|
|
470
|
+
console.log('payload', payload)
|
|
471
|
+
console.log(`invalid rows in payload`)
|
|
472
|
+
return Promise.reject(`invalid rows in payload`)
|
|
457
473
|
}
|
|
458
474
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
if (isestr(v)) {
|
|
465
|
-
if (strleft(v, 7) === 'base64:') {
|
|
466
|
-
// console.log(k, 'get base64')
|
|
467
|
-
v = strdelleft(v, 7)
|
|
468
|
-
v = b642str(v)
|
|
469
|
-
// console.log(v)
|
|
470
|
-
apis[kapi][k] = v
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
})
|
|
474
|
-
})
|
|
475
|
-
|
|
476
|
-
//save group
|
|
477
|
-
each(apis, (api, kapi) => {
|
|
478
|
-
apis[kapi].group = group
|
|
479
|
-
})
|
|
480
|
-
|
|
481
|
-
//resave
|
|
482
|
-
inp = { group, apis }
|
|
475
|
+
//r
|
|
476
|
+
let r = {
|
|
477
|
+
group,
|
|
478
|
+
rows,
|
|
479
|
+
}
|
|
483
480
|
|
|
484
|
-
return
|
|
481
|
+
return r
|
|
485
482
|
}
|
|
486
483
|
|
|
487
484
|
|
|
488
|
-
//updateAPIs
|
|
489
|
-
let updateAPIs = async (
|
|
485
|
+
// //updateAPIs
|
|
486
|
+
// let updateAPIs = async (inp = {}) => {
|
|
490
487
|
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
488
|
+
// //spread inp
|
|
489
|
+
// let { apis: rsApis } = inp
|
|
490
|
+
// // console.log('group', group)
|
|
491
|
+
// // console.log('rsApis', rsApis)
|
|
495
492
|
|
|
496
|
-
|
|
497
|
-
|
|
493
|
+
// //save
|
|
494
|
+
// let r = await woItems.apis.save(rsApis)
|
|
498
495
|
|
|
499
|
-
|
|
500
|
-
}
|
|
496
|
+
// return r
|
|
497
|
+
// }
|
|
501
498
|
|
|
502
499
|
|
|
503
|
-
//
|
|
504
|
-
let
|
|
500
|
+
//syncAndReplaceTabs
|
|
501
|
+
let syncAndReplaceTabs = async (userId, inp, keyTable) => {
|
|
505
502
|
|
|
506
503
|
//group
|
|
507
|
-
let group = get(
|
|
504
|
+
let group = get(inp, 'group', '')
|
|
508
505
|
// console.log('group', group)
|
|
509
506
|
|
|
510
507
|
//check
|
|
511
508
|
if (!isestr(group)) {
|
|
512
|
-
console.log('
|
|
509
|
+
console.log('inp', inp)
|
|
513
510
|
console.log('group', group)
|
|
514
511
|
console.log(`invalid group`)
|
|
515
512
|
return Promise.reject(`invalid group`)
|
|
516
513
|
}
|
|
517
514
|
|
|
518
|
-
//
|
|
519
|
-
let
|
|
520
|
-
// console.log('
|
|
515
|
+
//rows
|
|
516
|
+
let rows = get(inp, 'rows', [])
|
|
517
|
+
// console.log('rows', rows)
|
|
521
518
|
|
|
522
519
|
//check
|
|
523
|
-
if (!isearr(
|
|
524
|
-
console.log('
|
|
525
|
-
console.log('
|
|
526
|
-
|
|
527
|
-
return Promise.reject(`invalid apis`)
|
|
520
|
+
if (!isearr(rows)) {
|
|
521
|
+
console.log('inp', inp)
|
|
522
|
+
console.log('keyTable', keyTable)
|
|
523
|
+
return Promise.reject(`invalid rows`)
|
|
528
524
|
}
|
|
529
525
|
|
|
526
|
+
//save from
|
|
527
|
+
rows = map(rows, (v, k) => {
|
|
528
|
+
// v.order = k + 1 //order大部分由外部給予, 不能複寫
|
|
529
|
+
v.group = group
|
|
530
|
+
return v
|
|
531
|
+
})
|
|
532
|
+
|
|
533
|
+
//偵測b64自動恢復
|
|
534
|
+
if (keyTable === 'apis') {
|
|
535
|
+
each(rows, (row, krow) => {
|
|
536
|
+
// console.log(kapi, row.name)
|
|
537
|
+
each(row, (v, k) => {
|
|
538
|
+
// console.log(k, v)
|
|
539
|
+
if (isestr(v)) {
|
|
540
|
+
if (strleft(v, 7) === 'base64:') {
|
|
541
|
+
// console.log(k, 'get base64')
|
|
542
|
+
v = strdelleft(v, 7)
|
|
543
|
+
v = b642str(v)
|
|
544
|
+
// console.log(v)
|
|
545
|
+
rows[krow][k] = v
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
})
|
|
549
|
+
})
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
//ltdtmapping
|
|
553
|
+
rows = ltdtmapping(rows, ds[keyTable].keys)
|
|
554
|
+
// console.log('ltdtmapping rows', rows)
|
|
555
|
+
|
|
530
556
|
//delAll group
|
|
531
|
-
await woItems.
|
|
557
|
+
await woItems[keyTable].delAll({ group })
|
|
532
558
|
|
|
533
559
|
//insert
|
|
534
|
-
let r = await woItems.
|
|
560
|
+
// let r = await woItems[keyTable].insert(rows)
|
|
561
|
+
let r = await procOrm(userId, keyTable, 'insert', rows) //須使用procOrm才有辦法自動給予相關欄位
|
|
535
562
|
|
|
536
563
|
return r
|
|
537
564
|
}
|
|
@@ -587,7 +614,7 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
587
614
|
|
|
588
615
|
{
|
|
589
616
|
method: 'GET',
|
|
590
|
-
path: '/api/getUserByToken',
|
|
617
|
+
path: '/api/getUserByToken', //未登入主頁時需先檢測token, getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
|
|
591
618
|
handler: async function (req, res) {
|
|
592
619
|
// console.log('getUserByToken', req)
|
|
593
620
|
|
|
@@ -596,8 +623,17 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
596
623
|
//token
|
|
597
624
|
let token = get(req, 'query.token', '')
|
|
598
625
|
|
|
599
|
-
//
|
|
600
|
-
|
|
626
|
+
//check
|
|
627
|
+
if (!isestr(token)) {
|
|
628
|
+
console.log('req.query', get(req, 'query'))
|
|
629
|
+
console.log('token', token)
|
|
630
|
+
console.log('[API]getUserByToken/check token: invalid token')
|
|
631
|
+
console.log(`token does not have permission`)
|
|
632
|
+
return Promise.reject(`token does not have permission`)
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
//getAndVerifyClientUser
|
|
636
|
+
let user = await getAndVerifyClientUser(token, 'getUserByToken')
|
|
601
637
|
|
|
602
638
|
//check
|
|
603
639
|
if (!iseobj(user)) {
|
|
@@ -620,105 +656,166 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
620
656
|
return r
|
|
621
657
|
},
|
|
622
658
|
},
|
|
659
|
+
|
|
660
|
+
// {
|
|
661
|
+
// method: 'GET',
|
|
662
|
+
// path: '/getAPIsList',
|
|
663
|
+
// handler: async function (req, res) {
|
|
664
|
+
// // console.log('getAPIsList', req)
|
|
665
|
+
|
|
666
|
+
// async function core() {
|
|
667
|
+
|
|
668
|
+
// //token
|
|
669
|
+
// let token = get(req, 'query.token', '')
|
|
670
|
+
|
|
671
|
+
// //check
|
|
672
|
+
// if (!isestr(token)) {
|
|
673
|
+
// console.log('req.query', get(req, 'query'))
|
|
674
|
+
// console.log('token', token)
|
|
675
|
+
// console.log('[API]getAPIsList/check token: invalid token')
|
|
676
|
+
// console.log(`token does not have permission`)
|
|
677
|
+
// return Promise.reject(`token does not have permission`)
|
|
678
|
+
// }
|
|
679
|
+
|
|
680
|
+
// //getAndVerifyClientUser
|
|
681
|
+
// let user = await getAndVerifyClientUser(token, 'getAPIsList')
|
|
682
|
+
|
|
683
|
+
// //check
|
|
684
|
+
// if (!iseobj(user)) {
|
|
685
|
+
// console.log('token', token)
|
|
686
|
+
// console.log('[API]getAPIsList/check user: invalid user')
|
|
687
|
+
// console.log(`token does not have permission`)
|
|
688
|
+
// return Promise.reject(`token does not have permission`)
|
|
689
|
+
// }
|
|
690
|
+
|
|
691
|
+
// //getAPIsList
|
|
692
|
+
// let r = await getAPIsList({ isActive: 'y' })
|
|
693
|
+
|
|
694
|
+
// return r
|
|
695
|
+
// }
|
|
696
|
+
|
|
697
|
+
// //pm2resolve core
|
|
698
|
+
// let r = await pm2resolve(core)()
|
|
699
|
+
// if (isErr(r.msg)) {
|
|
700
|
+
// r.msg = r.msg.message
|
|
701
|
+
// }
|
|
702
|
+
// // console.log('getAPIsList', r)
|
|
703
|
+
|
|
704
|
+
// return r
|
|
705
|
+
// },
|
|
706
|
+
// },
|
|
707
|
+
|
|
708
|
+
// {
|
|
709
|
+
// method: 'POST',
|
|
710
|
+
// path: '/updateAPIs',
|
|
711
|
+
// handler: async function (req, res) {
|
|
712
|
+
// // console.log('updateAPIs', req)
|
|
713
|
+
// // console.log('payload', req.payload)
|
|
714
|
+
|
|
715
|
+
// async function core() {
|
|
716
|
+
|
|
717
|
+
// //token
|
|
718
|
+
// let token = get(req, 'query.token', '')
|
|
719
|
+
|
|
720
|
+
// //check
|
|
721
|
+
// if (!isestr(token)) {
|
|
722
|
+
// console.log('req.query', get(req, 'query'))
|
|
723
|
+
// console.log('token', token)
|
|
724
|
+
// console.log('[API]updateAPIs/check token: invalid token')
|
|
725
|
+
// console.log(`token does not have permission`)
|
|
726
|
+
// return Promise.reject(`token does not have permission`)
|
|
727
|
+
// }
|
|
728
|
+
|
|
729
|
+
// //getAndVerifyClientUser
|
|
730
|
+
// let user = await getAndVerifyClientUser(token, 'updateAPIs')
|
|
731
|
+
|
|
732
|
+
// //check
|
|
733
|
+
// if (!iseobj(user)) {
|
|
734
|
+
// console.log('token', token)
|
|
735
|
+
// console.log('[API]updateAPIs/check user: invalid user')
|
|
736
|
+
// console.log(`token does not have permission`)
|
|
737
|
+
// return Promise.reject(`token does not have permission`)
|
|
738
|
+
// }
|
|
739
|
+
|
|
740
|
+
// //parsePayload
|
|
741
|
+
// let inp = await parsePayload(req)
|
|
742
|
+
|
|
743
|
+
// //updateAPIs
|
|
744
|
+
// let r = await updateAPIs(inp)
|
|
745
|
+
|
|
746
|
+
// return r
|
|
747
|
+
// }
|
|
748
|
+
|
|
749
|
+
// //pm2resolve core
|
|
750
|
+
// let r = await pm2resolve(core)()
|
|
751
|
+
// if (isErr(r.msg)) {
|
|
752
|
+
// r.msg = r.msg.message
|
|
753
|
+
// }
|
|
754
|
+
// // console.log('updateAPIs', r)
|
|
755
|
+
|
|
756
|
+
// return r
|
|
757
|
+
// },
|
|
758
|
+
// },
|
|
759
|
+
|
|
623
760
|
{
|
|
624
|
-
method: '
|
|
625
|
-
path: '/
|
|
761
|
+
method: 'POST',
|
|
762
|
+
path: '/syncAndReplaceTabs',
|
|
626
763
|
handler: async function (req, res) {
|
|
627
|
-
// console.log('
|
|
764
|
+
// console.log('syncAndReplaceTabs', req)
|
|
765
|
+
// console.log('payload', req.payload)
|
|
628
766
|
|
|
629
767
|
async function core() {
|
|
630
768
|
|
|
631
769
|
//token
|
|
632
770
|
let token = get(req, 'query.token', '')
|
|
633
771
|
|
|
634
|
-
//getAndVerifyBrowserTokenUser
|
|
635
|
-
let user = await getAndVerifyBrowserTokenUser(token, 'getAPIsList')
|
|
636
|
-
|
|
637
772
|
//check
|
|
638
|
-
if (!
|
|
773
|
+
if (!isestr(token)) {
|
|
774
|
+
console.log('req.query', get(req, 'query'))
|
|
639
775
|
console.log('token', token)
|
|
640
|
-
console.log('[API]
|
|
776
|
+
console.log('[API]syncAndReplaceTabs/check token: invalid token')
|
|
641
777
|
console.log(`token does not have permission`)
|
|
642
778
|
return Promise.reject(`token does not have permission`)
|
|
643
779
|
}
|
|
644
780
|
|
|
645
|
-
//
|
|
646
|
-
let
|
|
647
|
-
|
|
648
|
-
return r
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
//pm2resolve core
|
|
652
|
-
let r = await pm2resolve(core)()
|
|
653
|
-
if (isErr(r.msg)) {
|
|
654
|
-
r.msg = r.msg.message
|
|
655
|
-
}
|
|
656
|
-
// console.log('getAPIsList', r)
|
|
657
|
-
|
|
658
|
-
return r
|
|
659
|
-
},
|
|
660
|
-
},
|
|
661
|
-
{
|
|
662
|
-
method: 'POST',
|
|
663
|
-
path: '/updateAPIs',
|
|
664
|
-
handler: async function (req, res) {
|
|
665
|
-
// console.log('updateAPIs', req)
|
|
666
|
-
// console.log('payload', req.payload)
|
|
781
|
+
//keyTable
|
|
782
|
+
let keyTable = get(req, 'query.keyTable', '')
|
|
667
783
|
|
|
668
|
-
|
|
784
|
+
//check
|
|
785
|
+
if (!isestr(keyTable)) {
|
|
786
|
+
console.log('req.query', get(req, 'query'))
|
|
787
|
+
console.log('keyTable', keyTable)
|
|
788
|
+
console.log('[API]syncAndReplaceTabs/check keyTable: invalid keyTable')
|
|
789
|
+
console.log(`token does not have permission`)
|
|
790
|
+
return Promise.reject(`token does not have permission`)
|
|
791
|
+
}
|
|
669
792
|
|
|
670
|
-
//
|
|
671
|
-
let
|
|
793
|
+
//check keyTable
|
|
794
|
+
let allowedTables = ['apis']
|
|
795
|
+
if (!allowedTables.includes(keyTable)) {
|
|
796
|
+
console.log('[API]syncAndReplaceTabs/check keyTable: unexpected keyTable', keyTable)
|
|
797
|
+
return Promise.reject(`invalid keyTable: ${keyTable}`)
|
|
798
|
+
}
|
|
672
799
|
|
|
673
|
-
//
|
|
674
|
-
let user = await
|
|
800
|
+
//getAndVerifyAppUser
|
|
801
|
+
let user = await getAndVerifyAppUser(token, 'syncAndReplaceTabs')
|
|
675
802
|
|
|
676
803
|
//check
|
|
677
804
|
if (!iseobj(user)) {
|
|
678
805
|
console.log('token', token)
|
|
679
|
-
console.log('[API]
|
|
806
|
+
console.log('[API]syncAndReplaceTabs/check user: invalid user')
|
|
680
807
|
console.log(`token does not have permission`)
|
|
681
808
|
return Promise.reject(`token does not have permission`)
|
|
682
809
|
}
|
|
683
810
|
|
|
684
|
-
//
|
|
685
|
-
let
|
|
686
|
-
|
|
687
|
-
//updateAPIs
|
|
688
|
-
let r = await updateAPIs(inp)
|
|
689
|
-
|
|
690
|
-
return r
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
//pm2resolve core
|
|
694
|
-
let r = await pm2resolve(core)()
|
|
695
|
-
if (isErr(r.msg)) {
|
|
696
|
-
r.msg = r.msg.message
|
|
697
|
-
}
|
|
698
|
-
// console.log('updateAPIs', r)
|
|
699
|
-
|
|
700
|
-
return r
|
|
701
|
-
},
|
|
702
|
-
},
|
|
703
|
-
{
|
|
704
|
-
method: 'POST',
|
|
705
|
-
path: '/syncAndReplaceApis',
|
|
706
|
-
handler: async function (req, res) {
|
|
707
|
-
// console.log('syncAndReplaceApis', req)
|
|
708
|
-
// console.log('payload', req.payload)
|
|
709
|
-
|
|
710
|
-
async function core() {
|
|
711
|
-
|
|
712
|
-
//token
|
|
713
|
-
let token = get(req, 'query.token', '')
|
|
811
|
+
//userId
|
|
812
|
+
let userId = get(user, 'id', '')
|
|
714
813
|
|
|
715
|
-
//
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
//check
|
|
719
|
-
if (!iseobj(user)) {
|
|
814
|
+
//check userId
|
|
815
|
+
if (!isestr(userId)) {
|
|
720
816
|
console.log('token', token)
|
|
721
|
-
console.log('
|
|
817
|
+
console.log('user', user)
|
|
818
|
+
console.log('[API]syncAndReplaceTabs/check userId: invalid userId')
|
|
722
819
|
console.log(`token does not have permission`)
|
|
723
820
|
return Promise.reject(`token does not have permission`)
|
|
724
821
|
}
|
|
@@ -726,8 +823,8 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
726
823
|
//parsePayload
|
|
727
824
|
let inp = await parsePayload(req)
|
|
728
825
|
|
|
729
|
-
//
|
|
730
|
-
let r = await
|
|
826
|
+
//syncAndReplaceTabs
|
|
827
|
+
let r = await syncAndReplaceTabs(userId, inp, keyTable)
|
|
731
828
|
|
|
732
829
|
return r
|
|
733
830
|
}
|
|
@@ -737,11 +834,12 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
737
834
|
if (isErr(r.msg)) {
|
|
738
835
|
r.msg = r.msg.message
|
|
739
836
|
}
|
|
740
|
-
// console.log('
|
|
837
|
+
// console.log('syncAndReplaceTabs', r)
|
|
741
838
|
|
|
742
839
|
return r
|
|
743
840
|
},
|
|
744
841
|
},
|
|
842
|
+
|
|
745
843
|
]
|
|
746
844
|
|
|
747
845
|
|
|
@@ -803,11 +901,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
803
901
|
|
|
804
902
|
getWebInfor,
|
|
805
903
|
|
|
806
|
-
getAPIsList: (userId, query = {}) => {
|
|
807
|
-
|
|
808
|
-
},
|
|
809
|
-
|
|
810
|
-
// updateApis: (userId, rows) => {
|
|
904
|
+
// getAPIsList: (userId, query = {}) => { //待提供api管理系統界面使用
|
|
905
|
+
// return getAPIsList(query)
|
|
906
|
+
// },
|
|
907
|
+
// updateApis: (userId, rows) => { //待提供api管理系統界面使用
|
|
811
908
|
// return updateApis(rows)
|
|
812
909
|
// },
|
|
813
910
|
|
|
@@ -835,7 +932,7 @@ export default WWebApi
|
|
|
835
932
|
<br class="clear">
|
|
836
933
|
|
|
837
934
|
<footer>
|
|
838
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
935
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sun Jul 20 2025 22:09:28 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
839
936
|
</footer>
|
|
840
937
|
|
|
841
938
|
<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 Sun Jul 20 2025 22:09:28 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
75
75
|
</footer>
|
|
76
76
|
|
|
77
77
|
<script>prettyPrint();</script>
|