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
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import map from 'lodash-es/map.js'
|
|
2
|
+
import ds from './src/schema/index.mjs'
|
|
3
|
+
import provideTabs from './server/provideTabs.mjs'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
async function provide() {
|
|
7
|
+
|
|
8
|
+
let url = `http://localhost:11005/syncAndReplaceTabs?token=sys&keyTable=apis`
|
|
9
|
+
|
|
10
|
+
let rs = [
|
|
11
|
+
{
|
|
12
|
+
id: 'id-for-test',
|
|
13
|
+
// order: 0,
|
|
14
|
+
name: '取得天竺鼠清單資訊',
|
|
15
|
+
description: '取得天竺鼠清單資訊',
|
|
16
|
+
url: '指api網址, 例如 http://localhost:11005/getDogsList',
|
|
17
|
+
method: 'get',
|
|
18
|
+
version: 'v1',
|
|
19
|
+
// group: '寵物',
|
|
20
|
+
levels: '寵物.天竺鼠',
|
|
21
|
+
keywords: 'pets;guineapigs',
|
|
22
|
+
state: 'ok',
|
|
23
|
+
creator: 'pets-system',
|
|
24
|
+
dataSource: 'pets-data',
|
|
25
|
+
mdInputParams: '輸入方式說明, markdown格式',
|
|
26
|
+
inputExample: '輸入範例數據',
|
|
27
|
+
mdOutputParams: '輸出方式說明, markdown格式',
|
|
28
|
+
outputExample: '輸出範例數據, json格式',
|
|
29
|
+
},
|
|
30
|
+
]
|
|
31
|
+
rs = map(rs, (v, k) => {
|
|
32
|
+
let vv = ds.apis.funNew(v)
|
|
33
|
+
vv.id = v.id
|
|
34
|
+
return vv
|
|
35
|
+
})
|
|
36
|
+
console.log('rs', rs)
|
|
37
|
+
|
|
38
|
+
let keyTable = 'apis'
|
|
39
|
+
let group = '寵物'
|
|
40
|
+
let r = await provideTabs(url, keyTable, group, rs)
|
|
41
|
+
console.log('r', r)
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
provide()
|
|
46
|
+
.catch((err) => {
|
|
47
|
+
console.log('provide catch', err)
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
//node g.provideApis.mjs
|
package/package.json
CHANGED
package/server/WWebApi.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import path from 'path'
|
|
|
2
2
|
import fs from 'fs'
|
|
3
3
|
import get from 'lodash-es/get.js'
|
|
4
4
|
import each from 'lodash-es/each.js'
|
|
5
|
+
import map from 'lodash-es/map.js'
|
|
5
6
|
import keys from 'lodash-es/keys.js'
|
|
6
7
|
import j2o from 'wsemi/src/j2o.mjs'
|
|
7
8
|
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
@@ -18,6 +19,7 @@ import strright from 'wsemi/src/strright.mjs'
|
|
|
18
19
|
import strdelright from 'wsemi/src/strdelright.mjs'
|
|
19
20
|
import pm2resolve from 'wsemi/src/pm2resolve.mjs'
|
|
20
21
|
import b642str from 'wsemi/src/b642str.mjs'
|
|
22
|
+
import ltdtmapping from 'wsemi/src/ltdtmapping.mjs'
|
|
21
23
|
import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
|
|
22
24
|
import fsIsFile from 'wsemi/src/fsIsFile.mjs'
|
|
23
25
|
import replace from 'wsemi/src/replace.mjs'
|
|
@@ -316,175 +318,200 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
316
318
|
}
|
|
317
319
|
|
|
318
320
|
|
|
319
|
-
//
|
|
320
|
-
let
|
|
321
|
+
//getAndVerifyClientUser
|
|
322
|
+
let getAndVerifyClientUser = async (token, from = '') => {
|
|
323
|
+
//基於token查找client使用者, 會基於外部getUserByToken以及perm內部users進行查找並比對
|
|
321
324
|
|
|
322
325
|
//getTokenUser
|
|
323
|
-
let
|
|
326
|
+
let user = await getTokenUser(token)
|
|
324
327
|
|
|
325
328
|
//verifyClientUser
|
|
326
|
-
let b = verifyClientUser(
|
|
329
|
+
let b = verifyClientUser(user, from)
|
|
327
330
|
if (ispm(b)) {
|
|
328
331
|
b = await b
|
|
329
332
|
}
|
|
330
333
|
|
|
331
334
|
//check
|
|
332
335
|
if (!b) {
|
|
333
|
-
console.log('
|
|
336
|
+
console.log('user', user)
|
|
334
337
|
console.log(`user does not have permission`)
|
|
335
338
|
return Promise.reject(`user does not have permission`)
|
|
336
339
|
}
|
|
337
340
|
|
|
338
|
-
return
|
|
341
|
+
return user
|
|
339
342
|
}
|
|
340
343
|
|
|
341
344
|
|
|
342
|
-
//
|
|
343
|
-
let
|
|
345
|
+
//getAndVerifyAppUser
|
|
346
|
+
let getAndVerifyAppUser = async (token, from = '') => {
|
|
347
|
+
//基於token查找app使用者, 會基於外部getUserByToken進行查找, 故只要getUserByToken提供使用者即可, 可支援getUserByToken給予針對應用程式所產生之虛擬使用者
|
|
344
348
|
|
|
345
|
-
//
|
|
346
|
-
let
|
|
349
|
+
//user
|
|
350
|
+
let user = null
|
|
351
|
+
if (isestr(token)) {
|
|
352
|
+
user = getUserByToken(token)
|
|
353
|
+
if (ispm(user)) {
|
|
354
|
+
user = await user
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
// console.log('user', user)
|
|
358
|
+
|
|
359
|
+
//check
|
|
360
|
+
if (!iseobj(user)) {
|
|
361
|
+
console.log(`token`, token)
|
|
362
|
+
console.log(`can not find the user from token`)
|
|
363
|
+
return Promise.reject(`can not find the user from token`)
|
|
364
|
+
}
|
|
347
365
|
|
|
348
366
|
//verifyAppUser
|
|
349
|
-
let b = verifyAppUser(
|
|
367
|
+
let b = verifyAppUser(user, from)
|
|
350
368
|
if (ispm(b)) {
|
|
351
369
|
b = await b
|
|
352
370
|
}
|
|
353
371
|
|
|
354
372
|
//check
|
|
355
373
|
if (!b) {
|
|
356
|
-
console.log('
|
|
374
|
+
console.log('user', user)
|
|
357
375
|
console.log(`user does not have permission`)
|
|
358
376
|
return Promise.reject(`user does not have permission`)
|
|
359
377
|
}
|
|
360
378
|
|
|
361
|
-
return
|
|
379
|
+
return user
|
|
362
380
|
}
|
|
363
381
|
|
|
364
382
|
|
|
365
|
-
//getAPIsList
|
|
366
|
-
let getAPIsList = async (query = {}) => {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
}
|
|
383
|
+
// //getAPIsList
|
|
384
|
+
// let getAPIsList = async (query = {}) => {
|
|
385
|
+
// let rs = await woItems.apis.select(query)
|
|
386
|
+
// return rs
|
|
387
|
+
// }
|
|
370
388
|
|
|
371
389
|
|
|
372
390
|
//parsePayload
|
|
373
391
|
let parsePayload = async (req) => {
|
|
374
392
|
|
|
375
|
-
//
|
|
376
|
-
let
|
|
393
|
+
//payload
|
|
394
|
+
let payload = get(req, 'payload')
|
|
377
395
|
|
|
378
396
|
//to obj
|
|
379
|
-
if (isestr(
|
|
380
|
-
|
|
397
|
+
if (isestr(payload)) {
|
|
398
|
+
payload = j2o(payload)
|
|
381
399
|
}
|
|
382
400
|
|
|
383
401
|
//check
|
|
384
|
-
if (!iseobj(
|
|
385
|
-
console.log('
|
|
386
|
-
console.log(`invalid
|
|
387
|
-
return Promise.reject(`invalid
|
|
402
|
+
if (!iseobj(payload)) {
|
|
403
|
+
console.log('payload', payload)
|
|
404
|
+
console.log(`invalid payload in req`)
|
|
405
|
+
return Promise.reject(`invalid payload in req`)
|
|
388
406
|
}
|
|
389
407
|
|
|
390
408
|
//group
|
|
391
|
-
let group = get(
|
|
409
|
+
let group = get(payload, 'group', '')
|
|
392
410
|
|
|
393
411
|
//check
|
|
394
412
|
if (!isestr(group)) {
|
|
395
|
-
console.log('
|
|
396
|
-
console.log(
|
|
397
|
-
|
|
398
|
-
return Promise.reject(`invalid group from inp`)
|
|
413
|
+
console.log('payload', payload)
|
|
414
|
+
console.log(`invalid group in payload`)
|
|
415
|
+
return Promise.reject(`invalid group in payload`)
|
|
399
416
|
}
|
|
400
417
|
|
|
401
|
-
//
|
|
402
|
-
let
|
|
418
|
+
//rows
|
|
419
|
+
let rows = get(payload, 'rows', [])
|
|
403
420
|
|
|
404
421
|
//check
|
|
405
|
-
if (!isearr(
|
|
406
|
-
console.log('
|
|
407
|
-
console.log(
|
|
408
|
-
|
|
409
|
-
return Promise.reject(`invalid apis from inp`)
|
|
422
|
+
if (!isearr(rows)) {
|
|
423
|
+
console.log('payload', payload)
|
|
424
|
+
console.log(`invalid rows in payload`)
|
|
425
|
+
return Promise.reject(`invalid rows in payload`)
|
|
410
426
|
}
|
|
411
427
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
if (isestr(v)) {
|
|
418
|
-
if (strleft(v, 7) === 'base64:') {
|
|
419
|
-
// console.log(k, 'get base64')
|
|
420
|
-
v = strdelleft(v, 7)
|
|
421
|
-
v = b642str(v)
|
|
422
|
-
// console.log(v)
|
|
423
|
-
apis[kapi][k] = v
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
})
|
|
427
|
-
})
|
|
428
|
-
|
|
429
|
-
//save group
|
|
430
|
-
each(apis, (api, kapi) => {
|
|
431
|
-
apis[kapi].group = group
|
|
432
|
-
})
|
|
433
|
-
|
|
434
|
-
//resave
|
|
435
|
-
inp = { group, apis }
|
|
428
|
+
//r
|
|
429
|
+
let r = {
|
|
430
|
+
group,
|
|
431
|
+
rows,
|
|
432
|
+
}
|
|
436
433
|
|
|
437
|
-
return
|
|
434
|
+
return r
|
|
438
435
|
}
|
|
439
436
|
|
|
440
437
|
|
|
441
|
-
//updateAPIs
|
|
442
|
-
let updateAPIs = async (
|
|
438
|
+
// //updateAPIs
|
|
439
|
+
// let updateAPIs = async (inp = {}) => {
|
|
443
440
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
441
|
+
// //spread inp
|
|
442
|
+
// let { apis: rsApis } = inp
|
|
443
|
+
// // console.log('group', group)
|
|
444
|
+
// // console.log('rsApis', rsApis)
|
|
448
445
|
|
|
449
|
-
|
|
450
|
-
|
|
446
|
+
// //save
|
|
447
|
+
// let r = await woItems.apis.save(rsApis)
|
|
451
448
|
|
|
452
|
-
|
|
453
|
-
}
|
|
449
|
+
// return r
|
|
450
|
+
// }
|
|
454
451
|
|
|
455
452
|
|
|
456
|
-
//
|
|
457
|
-
let
|
|
453
|
+
//syncAndReplaceTabs
|
|
454
|
+
let syncAndReplaceTabs = async (userId, inp, keyTable) => {
|
|
458
455
|
|
|
459
456
|
//group
|
|
460
|
-
let group = get(
|
|
457
|
+
let group = get(inp, 'group', '')
|
|
461
458
|
// console.log('group', group)
|
|
462
459
|
|
|
463
460
|
//check
|
|
464
461
|
if (!isestr(group)) {
|
|
465
|
-
console.log('
|
|
462
|
+
console.log('inp', inp)
|
|
466
463
|
console.log('group', group)
|
|
467
464
|
console.log(`invalid group`)
|
|
468
465
|
return Promise.reject(`invalid group`)
|
|
469
466
|
}
|
|
470
467
|
|
|
471
|
-
//
|
|
472
|
-
let
|
|
473
|
-
// console.log('
|
|
468
|
+
//rows
|
|
469
|
+
let rows = get(inp, 'rows', [])
|
|
470
|
+
// console.log('rows', rows)
|
|
474
471
|
|
|
475
472
|
//check
|
|
476
|
-
if (!isearr(
|
|
477
|
-
console.log('
|
|
478
|
-
console.log('
|
|
479
|
-
|
|
480
|
-
return Promise.reject(`invalid apis`)
|
|
473
|
+
if (!isearr(rows)) {
|
|
474
|
+
console.log('inp', inp)
|
|
475
|
+
console.log('keyTable', keyTable)
|
|
476
|
+
return Promise.reject(`invalid rows`)
|
|
481
477
|
}
|
|
482
478
|
|
|
479
|
+
//save from
|
|
480
|
+
rows = map(rows, (v, k) => {
|
|
481
|
+
// v.order = k + 1 //order大部分由外部給予, 不能複寫
|
|
482
|
+
v.group = group
|
|
483
|
+
return v
|
|
484
|
+
})
|
|
485
|
+
|
|
486
|
+
//偵測b64自動恢復
|
|
487
|
+
if (keyTable === 'apis') {
|
|
488
|
+
each(rows, (row, krow) => {
|
|
489
|
+
// console.log(kapi, row.name)
|
|
490
|
+
each(row, (v, k) => {
|
|
491
|
+
// console.log(k, v)
|
|
492
|
+
if (isestr(v)) {
|
|
493
|
+
if (strleft(v, 7) === 'base64:') {
|
|
494
|
+
// console.log(k, 'get base64')
|
|
495
|
+
v = strdelleft(v, 7)
|
|
496
|
+
v = b642str(v)
|
|
497
|
+
// console.log(v)
|
|
498
|
+
rows[krow][k] = v
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
})
|
|
502
|
+
})
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
//ltdtmapping
|
|
506
|
+
rows = ltdtmapping(rows, ds[keyTable].keys)
|
|
507
|
+
// console.log('ltdtmapping rows', rows)
|
|
508
|
+
|
|
483
509
|
//delAll group
|
|
484
|
-
await woItems.
|
|
510
|
+
await woItems[keyTable].delAll({ group })
|
|
485
511
|
|
|
486
512
|
//insert
|
|
487
|
-
let r = await woItems.
|
|
513
|
+
// let r = await woItems[keyTable].insert(rows)
|
|
514
|
+
let r = await procOrm(userId, keyTable, 'insert', rows) //須使用procOrm才有辦法自動給予相關欄位
|
|
488
515
|
|
|
489
516
|
return r
|
|
490
517
|
}
|
|
@@ -540,7 +567,7 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
540
567
|
|
|
541
568
|
{
|
|
542
569
|
method: 'GET',
|
|
543
|
-
path: '/api/getUserByToken',
|
|
570
|
+
path: '/api/getUserByToken', //未登入主頁時需先檢測token, getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
|
|
544
571
|
handler: async function (req, res) {
|
|
545
572
|
// console.log('getUserByToken', req)
|
|
546
573
|
|
|
@@ -549,8 +576,17 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
549
576
|
//token
|
|
550
577
|
let token = get(req, 'query.token', '')
|
|
551
578
|
|
|
552
|
-
//
|
|
553
|
-
|
|
579
|
+
//check
|
|
580
|
+
if (!isestr(token)) {
|
|
581
|
+
console.log('req.query', get(req, 'query'))
|
|
582
|
+
console.log('token', token)
|
|
583
|
+
console.log('[API]getUserByToken/check token: invalid token')
|
|
584
|
+
console.log(`token does not have permission`)
|
|
585
|
+
return Promise.reject(`token does not have permission`)
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
//getAndVerifyClientUser
|
|
589
|
+
let user = await getAndVerifyClientUser(token, 'getUserByToken')
|
|
554
590
|
|
|
555
591
|
//check
|
|
556
592
|
if (!iseobj(user)) {
|
|
@@ -573,105 +609,166 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
573
609
|
return r
|
|
574
610
|
},
|
|
575
611
|
},
|
|
612
|
+
|
|
613
|
+
// {
|
|
614
|
+
// method: 'GET',
|
|
615
|
+
// path: '/getAPIsList',
|
|
616
|
+
// handler: async function (req, res) {
|
|
617
|
+
// // console.log('getAPIsList', req)
|
|
618
|
+
|
|
619
|
+
// async function core() {
|
|
620
|
+
|
|
621
|
+
// //token
|
|
622
|
+
// let token = get(req, 'query.token', '')
|
|
623
|
+
|
|
624
|
+
// //check
|
|
625
|
+
// if (!isestr(token)) {
|
|
626
|
+
// console.log('req.query', get(req, 'query'))
|
|
627
|
+
// console.log('token', token)
|
|
628
|
+
// console.log('[API]getAPIsList/check token: invalid token')
|
|
629
|
+
// console.log(`token does not have permission`)
|
|
630
|
+
// return Promise.reject(`token does not have permission`)
|
|
631
|
+
// }
|
|
632
|
+
|
|
633
|
+
// //getAndVerifyClientUser
|
|
634
|
+
// let user = await getAndVerifyClientUser(token, 'getAPIsList')
|
|
635
|
+
|
|
636
|
+
// //check
|
|
637
|
+
// if (!iseobj(user)) {
|
|
638
|
+
// console.log('token', token)
|
|
639
|
+
// console.log('[API]getAPIsList/check user: invalid user')
|
|
640
|
+
// console.log(`token does not have permission`)
|
|
641
|
+
// return Promise.reject(`token does not have permission`)
|
|
642
|
+
// }
|
|
643
|
+
|
|
644
|
+
// //getAPIsList
|
|
645
|
+
// let r = await getAPIsList({ isActive: 'y' })
|
|
646
|
+
|
|
647
|
+
// return r
|
|
648
|
+
// }
|
|
649
|
+
|
|
650
|
+
// //pm2resolve core
|
|
651
|
+
// let r = await pm2resolve(core)()
|
|
652
|
+
// if (isErr(r.msg)) {
|
|
653
|
+
// r.msg = r.msg.message
|
|
654
|
+
// }
|
|
655
|
+
// // console.log('getAPIsList', r)
|
|
656
|
+
|
|
657
|
+
// return r
|
|
658
|
+
// },
|
|
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)
|
|
667
|
+
|
|
668
|
+
// async function core() {
|
|
669
|
+
|
|
670
|
+
// //token
|
|
671
|
+
// let token = get(req, 'query.token', '')
|
|
672
|
+
|
|
673
|
+
// //check
|
|
674
|
+
// if (!isestr(token)) {
|
|
675
|
+
// console.log('req.query', get(req, 'query'))
|
|
676
|
+
// console.log('token', token)
|
|
677
|
+
// console.log('[API]updateAPIs/check token: invalid token')
|
|
678
|
+
// console.log(`token does not have permission`)
|
|
679
|
+
// return Promise.reject(`token does not have permission`)
|
|
680
|
+
// }
|
|
681
|
+
|
|
682
|
+
// //getAndVerifyClientUser
|
|
683
|
+
// let user = await getAndVerifyClientUser(token, 'updateAPIs')
|
|
684
|
+
|
|
685
|
+
// //check
|
|
686
|
+
// if (!iseobj(user)) {
|
|
687
|
+
// console.log('token', token)
|
|
688
|
+
// console.log('[API]updateAPIs/check user: invalid user')
|
|
689
|
+
// console.log(`token does not have permission`)
|
|
690
|
+
// return Promise.reject(`token does not have permission`)
|
|
691
|
+
// }
|
|
692
|
+
|
|
693
|
+
// //parsePayload
|
|
694
|
+
// let inp = await parsePayload(req)
|
|
695
|
+
|
|
696
|
+
// //updateAPIs
|
|
697
|
+
// let r = await updateAPIs(inp)
|
|
698
|
+
|
|
699
|
+
// return r
|
|
700
|
+
// }
|
|
701
|
+
|
|
702
|
+
// //pm2resolve core
|
|
703
|
+
// let r = await pm2resolve(core)()
|
|
704
|
+
// if (isErr(r.msg)) {
|
|
705
|
+
// r.msg = r.msg.message
|
|
706
|
+
// }
|
|
707
|
+
// // console.log('updateAPIs', r)
|
|
708
|
+
|
|
709
|
+
// return r
|
|
710
|
+
// },
|
|
711
|
+
// },
|
|
712
|
+
|
|
576
713
|
{
|
|
577
|
-
method: '
|
|
578
|
-
path: '/
|
|
714
|
+
method: 'POST',
|
|
715
|
+
path: '/syncAndReplaceTabs',
|
|
579
716
|
handler: async function (req, res) {
|
|
580
|
-
// console.log('
|
|
717
|
+
// console.log('syncAndReplaceTabs', req)
|
|
718
|
+
// console.log('payload', req.payload)
|
|
581
719
|
|
|
582
720
|
async function core() {
|
|
583
721
|
|
|
584
722
|
//token
|
|
585
723
|
let token = get(req, 'query.token', '')
|
|
586
724
|
|
|
587
|
-
//getAndVerifyBrowserTokenUser
|
|
588
|
-
let user = await getAndVerifyBrowserTokenUser(token, 'getAPIsList')
|
|
589
|
-
|
|
590
725
|
//check
|
|
591
|
-
if (!
|
|
726
|
+
if (!isestr(token)) {
|
|
727
|
+
console.log('req.query', get(req, 'query'))
|
|
592
728
|
console.log('token', token)
|
|
593
|
-
console.log('[API]
|
|
729
|
+
console.log('[API]syncAndReplaceTabs/check token: invalid token')
|
|
594
730
|
console.log(`token does not have permission`)
|
|
595
731
|
return Promise.reject(`token does not have permission`)
|
|
596
732
|
}
|
|
597
733
|
|
|
598
|
-
//
|
|
599
|
-
let
|
|
600
|
-
|
|
601
|
-
return r
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
//pm2resolve core
|
|
605
|
-
let r = await pm2resolve(core)()
|
|
606
|
-
if (isErr(r.msg)) {
|
|
607
|
-
r.msg = r.msg.message
|
|
608
|
-
}
|
|
609
|
-
// console.log('getAPIsList', r)
|
|
610
|
-
|
|
611
|
-
return r
|
|
612
|
-
},
|
|
613
|
-
},
|
|
614
|
-
{
|
|
615
|
-
method: 'POST',
|
|
616
|
-
path: '/updateAPIs',
|
|
617
|
-
handler: async function (req, res) {
|
|
618
|
-
// console.log('updateAPIs', req)
|
|
619
|
-
// console.log('payload', req.payload)
|
|
734
|
+
//keyTable
|
|
735
|
+
let keyTable = get(req, 'query.keyTable', '')
|
|
620
736
|
|
|
621
|
-
|
|
737
|
+
//check
|
|
738
|
+
if (!isestr(keyTable)) {
|
|
739
|
+
console.log('req.query', get(req, 'query'))
|
|
740
|
+
console.log('keyTable', keyTable)
|
|
741
|
+
console.log('[API]syncAndReplaceTabs/check keyTable: invalid keyTable')
|
|
742
|
+
console.log(`token does not have permission`)
|
|
743
|
+
return Promise.reject(`token does not have permission`)
|
|
744
|
+
}
|
|
622
745
|
|
|
623
|
-
//
|
|
624
|
-
let
|
|
746
|
+
//check keyTable
|
|
747
|
+
let allowedTables = ['apis']
|
|
748
|
+
if (!allowedTables.includes(keyTable)) {
|
|
749
|
+
console.log('[API]syncAndReplaceTabs/check keyTable: unexpected keyTable', keyTable)
|
|
750
|
+
return Promise.reject(`invalid keyTable: ${keyTable}`)
|
|
751
|
+
}
|
|
625
752
|
|
|
626
|
-
//
|
|
627
|
-
let user = await
|
|
753
|
+
//getAndVerifyAppUser
|
|
754
|
+
let user = await getAndVerifyAppUser(token, 'syncAndReplaceTabs')
|
|
628
755
|
|
|
629
756
|
//check
|
|
630
757
|
if (!iseobj(user)) {
|
|
631
758
|
console.log('token', token)
|
|
632
|
-
console.log('[API]
|
|
759
|
+
console.log('[API]syncAndReplaceTabs/check user: invalid user')
|
|
633
760
|
console.log(`token does not have permission`)
|
|
634
761
|
return Promise.reject(`token does not have permission`)
|
|
635
762
|
}
|
|
636
763
|
|
|
637
|
-
//
|
|
638
|
-
let
|
|
639
|
-
|
|
640
|
-
//updateAPIs
|
|
641
|
-
let r = await updateAPIs(inp)
|
|
642
|
-
|
|
643
|
-
return r
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
//pm2resolve core
|
|
647
|
-
let r = await pm2resolve(core)()
|
|
648
|
-
if (isErr(r.msg)) {
|
|
649
|
-
r.msg = r.msg.message
|
|
650
|
-
}
|
|
651
|
-
// console.log('updateAPIs', r)
|
|
652
|
-
|
|
653
|
-
return r
|
|
654
|
-
},
|
|
655
|
-
},
|
|
656
|
-
{
|
|
657
|
-
method: 'POST',
|
|
658
|
-
path: '/syncAndReplaceApis',
|
|
659
|
-
handler: async function (req, res) {
|
|
660
|
-
// console.log('syncAndReplaceApis', req)
|
|
661
|
-
// console.log('payload', req.payload)
|
|
662
|
-
|
|
663
|
-
async function core() {
|
|
664
|
-
|
|
665
|
-
//token
|
|
666
|
-
let token = get(req, 'query.token', '')
|
|
764
|
+
//userId
|
|
765
|
+
let userId = get(user, 'id', '')
|
|
667
766
|
|
|
668
|
-
//
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
//check
|
|
672
|
-
if (!iseobj(user)) {
|
|
767
|
+
//check userId
|
|
768
|
+
if (!isestr(userId)) {
|
|
673
769
|
console.log('token', token)
|
|
674
|
-
console.log('
|
|
770
|
+
console.log('user', user)
|
|
771
|
+
console.log('[API]syncAndReplaceTabs/check userId: invalid userId')
|
|
675
772
|
console.log(`token does not have permission`)
|
|
676
773
|
return Promise.reject(`token does not have permission`)
|
|
677
774
|
}
|
|
@@ -679,8 +776,8 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
679
776
|
//parsePayload
|
|
680
777
|
let inp = await parsePayload(req)
|
|
681
778
|
|
|
682
|
-
//
|
|
683
|
-
let r = await
|
|
779
|
+
//syncAndReplaceTabs
|
|
780
|
+
let r = await syncAndReplaceTabs(userId, inp, keyTable)
|
|
684
781
|
|
|
685
782
|
return r
|
|
686
783
|
}
|
|
@@ -690,11 +787,12 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
690
787
|
if (isErr(r.msg)) {
|
|
691
788
|
r.msg = r.msg.message
|
|
692
789
|
}
|
|
693
|
-
// console.log('
|
|
790
|
+
// console.log('syncAndReplaceTabs', r)
|
|
694
791
|
|
|
695
792
|
return r
|
|
696
793
|
},
|
|
697
794
|
},
|
|
795
|
+
|
|
698
796
|
]
|
|
699
797
|
|
|
700
798
|
|
|
@@ -756,11 +854,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
756
854
|
|
|
757
855
|
getWebInfor,
|
|
758
856
|
|
|
759
|
-
getAPIsList: (userId, query = {}) => {
|
|
760
|
-
|
|
761
|
-
},
|
|
762
|
-
|
|
763
|
-
// updateApis: (userId, rows) => {
|
|
857
|
+
// getAPIsList: (userId, query = {}) => { //待提供api管理系統界面使用
|
|
858
|
+
// return getAPIsList(query)
|
|
859
|
+
// },
|
|
860
|
+
// updateApis: (userId, rows) => { //待提供api管理系統界面使用
|
|
764
861
|
// return updateApis(rows)
|
|
765
862
|
// },
|
|
766
863
|
|