w-web-api 1.0.39 → 1.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +2 -2
  2. package/db/wapis/apis/data.mdb +0 -0
  3. package/db/wapis/apis/lock.mdb +0 -0
  4. package/dist/css/{app.99a58617.css → app.02bbf3c6.css} +1 -1
  5. package/dist/index.tmp +2 -2
  6. package/dist/js/app-legacy.d2226e7d.js +2 -0
  7. package/dist/js/app-legacy.d2226e7d.js.map +1 -0
  8. package/dist/js/app.d2226e7d.js +2 -0
  9. package/dist/js/app.d2226e7d.js.map +1 -0
  10. package/dist/js/{chunk-vendors.767ef893.js → chunk-vendors-legacy.10dbc55a.js} +3 -3
  11. package/dist/js/chunk-vendors-legacy.10dbc55a.js.map +1 -0
  12. package/dist/js/{chunk-vendors-legacy.767ef893.js → chunk-vendors.10dbc55a.js} +3 -3
  13. package/dist/js/chunk-vendors.10dbc55a.js.map +1 -0
  14. package/dist/w-web-api.umd.js +2 -2
  15. package/dist/w-web-api.umd.js.map +1 -1
  16. package/docs/WWebApi.html +3 -3
  17. package/docs/WWebApi.mjs.html +108 -22
  18. package/docs/index.html +1 -1
  19. package/package.json +6 -6
  20. package/public/index.html +1 -1
  21. package/script.txt +0 -1
  22. package/server/WWebApi.mjs +107 -21
  23. package/server/provideApis.mjs +15 -12
  24. package/src/App.vue +25 -4
  25. package/src/components/Layout.vue +56 -26
  26. package/src/components/LayoutContent.vue +51 -37
  27. package/src/components/LayoutState.vue +20 -8
  28. package/src/main.js +17 -20
  29. package/src/plugins/mLang.mjs +250 -0
  30. package/src/plugins/mUI.mjs +140 -51
  31. package/src/schema/tables/apis.mjs +6 -8
  32. package/src/store/mutations.mjs +8 -102
  33. package/src/store/types.mjs +1 -1
  34. package/srv.mjs +2 -2
  35. package/tableTags.json +1 -1
  36. package/dist/js/app-legacy.f7e293ef.js +0 -2
  37. package/dist/js/app-legacy.f7e293ef.js.map +0 -1
  38. package/dist/js/app.f7e293ef.js +0 -2
  39. package/dist/js/app.f7e293ef.js.map +0 -1
  40. package/dist/js/chunk-vendors-legacy.767ef893.js.map +0 -1
  41. package/dist/js/chunk-vendors.767ef893.js.map +0 -1
  42. package/src/plugins/mDataSupport.mjs +0 -66
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#line128">line 128</a>
83
+ <a href="WWebApi.mjs.html">WWebApi.mjs</a>, <a href="WWebApi.mjs.html#line129">line 129</a>
84
84
  </li></ul></dd>
85
85
 
86
86
 
@@ -127,7 +127,7 @@
127
127
 
128
128
  <h5 class="h5-examples">Example</h5>
129
129
 
130
- <pre class="prettyprint"><code>import WOrm from 'w-orm-lmdb/src/WOrmLmdb.mjs'
131
130
  useCheckUser: false,
132
131
  getUserById: null,
133
132
  useExcludeWhenNotAdmin: false,
134
133
  serverPort: 11005,
135
134
  subfolder: '', //mapi
136
135
  urlRedirect: 'https://www.google.com/', //本機測試時得先編譯, 再瀏覽: http://localhost:11005/
137
136
  webName: {
138
137
  'eng': 'API Service',
139
138
  'cht': 'API管理系統',
140
139
  },
141
140
  webDescription: {
142
141
  'eng': 'A web service package as methods to send requests to and receive responses from an API.',
143
142
  'cht': 'A web service package as methods to send requests to and receive responses from an API.',
144
143
  },
145
144
  webLogo: 'data:image/svg+xml;base64,...',
146
145
  // return {} //測試無法登入
147
146
  if (token === '{token-for-application}') { //提供外部應用系統作為存取使用者
148
147
  return {
149
148
  id: 'id-for-application',
150
149
  name: 'application',
151
150
  email: 'application@example.com',
152
151
  isAdmin: 'y',
153
152
  }
154
153
  }
155
154
  if (token === 'sys') { //開發階段w-ui-loginout自動給予browser使用者(且位於localhost)的token為sys
156
155
  return {
157
156
  id: 'id-for-admin',
158
157
  name: '測試者',
159
158
  email: 'admin@example.com',
160
159
  isAdmin: 'y',
161
160
  }
162
161
  }
163
162
  console.log('invalid token', token)
164
163
  console.log('於生產環境時得加入SSO等驗證token機制')
165
164
  return {}
166
165
  console.log('verifyClientUser/user', user)
167
166
  // return false //測試無法登入
168
167
  console.log('於生產環境時得加入限制瀏覽器使用者身份機制')
169
168
  return user.isAdmin === 'y' //測試僅系統管理者使用
170
169
  console.log('verifyAppUser/user', user)
171
170
  // return false //測試無法登入
172
171
  console.log('於生產環境時得加入限制應用程式使用者身份機制')
173
172
  return user.isAdmin === 'y' //測試僅系統管理者使用
174
173
  console.log(err)
174
+ <pre class="prettyprint"><code>import WOrm from 'w-orm-lmdb/src/WOrmLmdb.mjs'
175
175
  useCheckUser: false,
176
176
  getUserById: null,
177
177
  useExcludeWhenNotAdmin: false,
178
178
  serverPort: 11005,
179
179
  subfolder: '', //mapi
180
180
  urlRedirect: 'https://www.google.com/', //本機測試時得先編譯, 再瀏覽: http://localhost:11005/
181
181
  webName: {
182
182
  'eng': 'API Service',
183
183
  'cht': 'API管理系統',
184
184
  },
185
185
  webDescription: {
186
186
  'eng': 'A web service package as methods to send requests to and receive responses from an API.',
187
187
  'cht': 'A web service package as methods to send requests to and receive responses from an API.',
188
188
  },
189
189
  webLogo: 'data:image/svg+xml;base64,...',
190
190
  // return {} //測試無法登入
191
191
  if (token === '{token-for-application}') { //提供外部應用系統作為存取使用者
192
192
  return {
193
193
  id: 'id-for-application',
194
194
  name: 'application',
195
195
  email: 'application@example.com',
196
196
  isAdmin: 'y',
197
197
  }
198
198
  }
199
199
  if (token === 'sys') { //開發階段w-ui-loginout自動給予browser使用者(且位於localhost)的token為sys
200
200
  return {
201
201
  id: 'id-for-admin',
202
202
  name: '測試者',
203
203
  email: 'admin@example.com',
204
204
  isAdmin: 'y',
205
205
  }
206
206
  }
207
207
  console.log('invalid token', token)
208
208
  console.log('於生產環境時得加入SSO等驗證token機制')
209
209
  return {}
210
210
  console.log('verifyClientUser/user', user)
211
211
  // return false //測試無法登入
212
212
  console.log('於生產環境時得加入限制瀏覽器使用者身份機制')
213
213
  return user.isAdmin === 'y' //測試僅系統管理者使用
214
214
  console.log('verifyAppUser/user', user)
215
215
  // return false //測試無法登入
216
216
  console.log('於生產環境時得加入限制應用程式使用者身份機制')
217
217
  return user.isAdmin === 'y' //測試僅系統管理者使用
218
218
  console.log(err)
219
219
 
220
220
 
221
221
 
@@ -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 Sat Jun 07 2025 21:13:58 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
888
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Jul 14 2025 20:28:27 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
889
889
  </footer>
890
890
 
891
891
  <script>prettyPrint();</script>
@@ -55,6 +55,7 @@ import iseobj from 'wsemi/src/iseobj.mjs'
55
55
  import isestr from 'wsemi/src/isestr.mjs'
56
56
  import isearr from 'wsemi/src/isearr.mjs'
57
57
  import ispint from 'wsemi/src/ispint.mjs'
58
+ import isErr from 'wsemi/src/isErr.mjs'
58
59
  import isfun from 'wsemi/src/isfun.mjs'
59
60
  import ispm from 'wsemi/src/ispm.mjs'
60
61
  import cint from 'wsemi/src/cint.mjs'
@@ -150,14 +151,14 @@ import ds from '../src/schema/index.mjs'
150
151
  * return {}
151
152
  * }
152
153
  *
153
- * let verifyClientUser = (user, caller) => {
154
+ * let verifyClientUser = (user, from) => {
154
155
  * console.log('verifyClientUser/user', user)
155
156
  * // return false //測試無法登入
156
157
  * console.log('於生產環境時得加入限制瀏覽器使用者身份機制')
157
158
  * return user.isAdmin === 'y' //測試僅系統管理者使用
158
159
  * }
159
160
  *
160
- * let verifyAppUser = (user, caller) => {
161
+ * let verifyAppUser = (user, from) => {
161
162
  * console.log('verifyAppUser/user', user)
162
163
  * // return false //測試無法登入
163
164
  * console.log('於生產環境時得加入限制應用程式使用者身份機制')
@@ -292,6 +293,37 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
292
293
  }
293
294
 
294
295
 
296
+ //checkUser
297
+ let checkUser = async(user) => {
298
+ let id = get(user, 'id', '')
299
+ if (!isestr(id)) {
300
+ console.log('user', user)
301
+ console.log('can not get the userId')
302
+ return Promise.reject(`can not get the userId`)
303
+ }
304
+ let email = get(user, 'email', '')
305
+ if (!isestr(email)) {
306
+ console.log('user', user)
307
+ console.log('can not get the email of user')
308
+ return Promise.reject(`can not get the email of user`)
309
+ }
310
+ let name = get(user, 'name', '')
311
+ if (!isestr(name)) {
312
+ console.log('user', user)
313
+ console.log('can not get userName')
314
+ return Promise.reject(`can not get userName`)
315
+ }
316
+ let isAdmin = get(user, 'isAdmin', '')
317
+ if (isAdmin !== 'y' &amp;&amp; isAdmin !== 'n') {
318
+ console.log('user', user)
319
+ console.log('user.isAdmin is not y or n', user.isAdmin)
320
+ console.log('can not get the role of user')
321
+ return Promise.reject(`can not get the role of user`)
322
+ }
323
+ return true
324
+ }
325
+
326
+
295
327
  //getTokenUser
296
328
  let getTokenUser = async (token) => {
297
329
 
@@ -302,24 +334,43 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
302
334
  }
303
335
 
304
336
  //check
305
- if (!iseobj(userSelf)) {
306
- console.log(`token`, token)
307
- console.log(`can not find the user from token`)
308
- return Promise.reject(`can not find the user from token`)
337
+ if (true) {
338
+ // if (!iseobj(userSelf)) {
339
+ // console.log(`token`, token)
340
+ // console.log(`can not find the user from token`)
341
+ // return Promise.reject(`can not find the user from token`)
342
+ // }
343
+ await checkUser(userSelf)
309
344
  }
310
345
 
311
346
  return userSelf
312
347
  }
313
348
 
314
349
 
350
+ //p
351
+ let p = {
352
+ checkToken: async(token) => {
353
+
354
+ //getUserByToken
355
+ let u = await getUserByToken(token)
356
+ // console.log('u', u)
357
+
358
+ //checkUser
359
+ await checkUser(u)
360
+
361
+ return true
362
+ },
363
+ }
364
+
365
+
315
366
  //getAndVerifyBrowserTokenUser
316
- let getAndVerifyBrowserTokenUser = async (token, caller = '') => {
367
+ let getAndVerifyBrowserTokenUser = async (token, from = '') => {
317
368
 
318
369
  //getTokenUser
319
370
  let userSelf = await getTokenUser(token)
320
371
 
321
372
  //verifyClientUser
322
- let b = verifyClientUser(userSelf, caller)
373
+ let b = verifyClientUser(userSelf, from)
323
374
  if (ispm(b)) {
324
375
  b = await b
325
376
  }
@@ -336,13 +387,13 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
336
387
 
337
388
 
338
389
  //getAndVerifyAppTokenUser
339
- let getAndVerifyAppTokenUser = async (token, caller = '') => {
390
+ let getAndVerifyAppTokenUser = async (token, from = '') => {
340
391
 
341
392
  //getTokenUser
342
393
  let userSelf = await getTokenUser(token)
343
394
 
344
395
  //verifyAppUser
345
- let b = verifyAppUser(userSelf, caller)
396
+ let b = verifyAppUser(userSelf, from)
346
397
  if (ispm(b)) {
347
398
  b = await b
348
399
  }
@@ -533,13 +584,7 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
533
584
  // return 'someAPI'
534
585
  // },
535
586
  // },
536
- {
537
- method: 'GET',
538
- path: '/getWebInfor',
539
- handler: async function (req, res) {
540
- return getWebInfor()
541
- },
542
- },
587
+
543
588
  {
544
589
  method: 'GET',
545
590
  path: '/api/getUserByToken', //未登入界面需先檢測token是否為系統管理員, 確認後回傳為系統管理員資訊物件, getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
@@ -567,6 +612,9 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
567
612
 
568
613
  //pm2resolve core
569
614
  let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過, 會提取state進行判斷
615
+ if (isErr(r.msg)) {
616
+ r.msg = r.msg.message
617
+ }
570
618
  // console.log('getUserByToken', r)
571
619
 
572
620
  return r
@@ -602,7 +650,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
602
650
 
603
651
  //pm2resolve core
604
652
  let r = await pm2resolve(core)()
605
- // console.log('verifyIdentity', r)
653
+ if (isErr(r.msg)) {
654
+ r.msg = r.msg.message
655
+ }
656
+ // console.log('getAPIsList', r)
606
657
 
607
658
  return r
608
659
  },
@@ -641,7 +692,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
641
692
 
642
693
  //pm2resolve core
643
694
  let r = await pm2resolve(core)()
644
- // console.log('verifyIdentity', r)
695
+ if (isErr(r.msg)) {
696
+ r.msg = r.msg.message
697
+ }
698
+ // console.log('updateAPIs', r)
645
699
 
646
700
  return r
647
701
  },
@@ -680,7 +734,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
680
734
 
681
735
  //pm2resolve core
682
736
  let r = await pm2resolve(core)()
683
- // console.log('verifyIdentity', r)
737
+ if (isErr(r.msg)) {
738
+ r.msg = r.msg.message
739
+ }
740
+ // console.log('syncAndReplaceApis', r)
684
741
 
685
742
  return r
686
743
  },
@@ -700,7 +757,30 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
700
757
  instWServHapiServer = new WServHapiServer({
701
758
  port: opt.serverPort,
702
759
  pathStaticFiles,
760
+ apiName: 'api',
703
761
  apis,
762
+ tokenType: 'Bearer',
763
+ verifyConn: async ({ apiType, authorization, query, headers, req }) => {
764
+ // console.log('verifyConn', `apiType[${apiType}]`, `authorization[${authorization}]`)
765
+
766
+ //token
767
+ let token = strdelleft(authorization, 7) //刪除Bearer
768
+ // console.log('token', token)
769
+
770
+ //check
771
+ if (!isestr(token)) {
772
+ console.log('apiType', apiType)
773
+ console.log('authorization', authorization)
774
+ console.log('invalid token')
775
+ return false
776
+ }
777
+
778
+ //checkToken
779
+ let b = await p.checkToken(token)
780
+ // console.log('b', b)
781
+
782
+ return b
783
+ },
704
784
  getUserIdByToken: async (token) => { //可使用async或sync函數
705
785
  // console.log('getUserIdByToken', token)
706
786
  return ''
@@ -720,11 +800,17 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
720
800
  methodsExec: ['select', 'insert', 'save', 'del'], //mix需於procOrm內註冊以提供
721
801
  tableNamesSync,
722
802
  kpFunExt: { //接收參數第1個為userId, 之後才是前端給予參數
803
+
723
804
  getWebInfor,
805
+
724
806
  getAPIsList: (userId, query = {}) => {
725
807
  return getAPIsList(query)
726
808
  },
727
- //...
809
+
810
+ // updateApis: (userId, rows) => {
811
+ // return updateApis(rows)
812
+ // },
813
+
728
814
  },
729
815
  fnTableTags: 'tableTags-web-api.json',
730
816
  })
@@ -749,7 +835,7 @@ export default WWebApi
749
835
  <br class="clear">
750
836
 
751
837
  <footer>
752
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sat Jun 07 2025 21:13:58 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
838
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Jul 14 2025 20:28:27 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
753
839
  </footer>
754
840
 
755
841
  <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 Sat Jun 07 2025 21:13:58 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
74
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Jul 14 2025 20:28:27 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/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "w-web-api",
3
- "version": "1.0.39",
3
+ "version": "1.0.41",
4
4
  "main": "dist/w-web-api.umd.js",
5
5
  "dependencies": {
6
6
  "@mdi/js": "^7.4.47",
7
7
  "axios": "^1.9.0",
8
8
  "lodash-es": "^4.17.21",
9
9
  "showdown": "^2.1.0",
10
- "w-component-vue": "^2.4.20",
10
+ "w-component-vue": "^2.4.22",
11
11
  "w-data-collector": "^1.0.22",
12
- "w-serv-hapi": "^1.0.57",
13
- "w-serv-orm": "^1.0.26",
12
+ "w-serv-hapi": "^1.0.60",
13
+ "w-serv-orm": "^1.0.29",
14
14
  "w-ui-loginout": "^1.0.9",
15
- "wsemi": "^1.7.92"
15
+ "wsemi": "^1.8.15"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@vue/cli-plugin-babel": "^5.0.8",
@@ -28,7 +28,7 @@
28
28
  "eslint-plugin-vue": "^9.10.0",
29
29
  "vue": "^2.6.14",
30
30
  "vuex": "^3.6.2",
31
- "w-orm-lmdb": "^1.0.1",
31
+ "w-orm-lmdb": "^1.0.2",
32
32
  "w-package-tools": "^1.1.2"
33
33
  },
34
34
  "scripts": {
package/public/index.html CHANGED
@@ -7,7 +7,7 @@
7
7
  <title></title>
8
8
 
9
9
  <!-- mdi font -->
10
- <link href="https://cdn.jsdelivr.net/npm/@mdi/font/css/materialdesignicons.min.css" rel="stylesheet">
10
+ <link href="https://cdn.jsdelivr.net/npm/@mdi/font@7.4.47/css/materialdesignicons.min.css" rel="stylesheet">
11
11
 
12
12
  <!-- fontawesome -->
13
13
  <link href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css" rel="stylesheet">
package/script.txt CHANGED
@@ -19,4 +19,3 @@ npm run deploy
19
19
  #npm test
20
20
 
21
21
  #npm publish
22
-
@@ -8,6 +8,7 @@ import iseobj from 'wsemi/src/iseobj.mjs'
8
8
  import isestr from 'wsemi/src/isestr.mjs'
9
9
  import isearr from 'wsemi/src/isearr.mjs'
10
10
  import ispint from 'wsemi/src/ispint.mjs'
11
+ import isErr from 'wsemi/src/isErr.mjs'
11
12
  import isfun from 'wsemi/src/isfun.mjs'
12
13
  import ispm from 'wsemi/src/ispm.mjs'
13
14
  import cint from 'wsemi/src/cint.mjs'
@@ -103,14 +104,14 @@ import ds from '../src/schema/index.mjs'
103
104
  * return {}
104
105
  * }
105
106
  *
106
- * let verifyClientUser = (user, caller) => {
107
+ * let verifyClientUser = (user, from) => {
107
108
  * console.log('verifyClientUser/user', user)
108
109
  * // return false //測試無法登入
109
110
  * console.log('於生產環境時得加入限制瀏覽器使用者身份機制')
110
111
  * return user.isAdmin === 'y' //測試僅系統管理者使用
111
112
  * }
112
113
  *
113
- * let verifyAppUser = (user, caller) => {
114
+ * let verifyAppUser = (user, from) => {
114
115
  * console.log('verifyAppUser/user', user)
115
116
  * // return false //測試無法登入
116
117
  * console.log('於生產環境時得加入限制應用程式使用者身份機制')
@@ -245,6 +246,37 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
245
246
  }
246
247
 
247
248
 
249
+ //checkUser
250
+ let checkUser = async(user) => {
251
+ let id = get(user, 'id', '')
252
+ if (!isestr(id)) {
253
+ console.log('user', user)
254
+ console.log('can not get the userId')
255
+ return Promise.reject(`can not get the userId`)
256
+ }
257
+ let email = get(user, 'email', '')
258
+ if (!isestr(email)) {
259
+ console.log('user', user)
260
+ console.log('can not get the email of user')
261
+ return Promise.reject(`can not get the email of user`)
262
+ }
263
+ let name = get(user, 'name', '')
264
+ if (!isestr(name)) {
265
+ console.log('user', user)
266
+ console.log('can not get userName')
267
+ return Promise.reject(`can not get userName`)
268
+ }
269
+ let isAdmin = get(user, 'isAdmin', '')
270
+ if (isAdmin !== 'y' && isAdmin !== 'n') {
271
+ console.log('user', user)
272
+ console.log('user.isAdmin is not y or n', user.isAdmin)
273
+ console.log('can not get the role of user')
274
+ return Promise.reject(`can not get the role of user`)
275
+ }
276
+ return true
277
+ }
278
+
279
+
248
280
  //getTokenUser
249
281
  let getTokenUser = async (token) => {
250
282
 
@@ -255,24 +287,43 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
255
287
  }
256
288
 
257
289
  //check
258
- if (!iseobj(userSelf)) {
259
- console.log(`token`, token)
260
- console.log(`can not find the user from token`)
261
- return Promise.reject(`can not find the user from token`)
290
+ if (true) {
291
+ // if (!iseobj(userSelf)) {
292
+ // console.log(`token`, token)
293
+ // console.log(`can not find the user from token`)
294
+ // return Promise.reject(`can not find the user from token`)
295
+ // }
296
+ await checkUser(userSelf)
262
297
  }
263
298
 
264
299
  return userSelf
265
300
  }
266
301
 
267
302
 
303
+ //p
304
+ let p = {
305
+ checkToken: async(token) => {
306
+
307
+ //getUserByToken
308
+ let u = await getUserByToken(token)
309
+ // console.log('u', u)
310
+
311
+ //checkUser
312
+ await checkUser(u)
313
+
314
+ return true
315
+ },
316
+ }
317
+
318
+
268
319
  //getAndVerifyBrowserTokenUser
269
- let getAndVerifyBrowserTokenUser = async (token, caller = '') => {
320
+ let getAndVerifyBrowserTokenUser = async (token, from = '') => {
270
321
 
271
322
  //getTokenUser
272
323
  let userSelf = await getTokenUser(token)
273
324
 
274
325
  //verifyClientUser
275
- let b = verifyClientUser(userSelf, caller)
326
+ let b = verifyClientUser(userSelf, from)
276
327
  if (ispm(b)) {
277
328
  b = await b
278
329
  }
@@ -289,13 +340,13 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
289
340
 
290
341
 
291
342
  //getAndVerifyAppTokenUser
292
- let getAndVerifyAppTokenUser = async (token, caller = '') => {
343
+ let getAndVerifyAppTokenUser = async (token, from = '') => {
293
344
 
294
345
  //getTokenUser
295
346
  let userSelf = await getTokenUser(token)
296
347
 
297
348
  //verifyAppUser
298
- let b = verifyAppUser(userSelf, caller)
349
+ let b = verifyAppUser(userSelf, from)
299
350
  if (ispm(b)) {
300
351
  b = await b
301
352
  }
@@ -486,13 +537,7 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
486
537
  // return 'someAPI'
487
538
  // },
488
539
  // },
489
- {
490
- method: 'GET',
491
- path: '/getWebInfor',
492
- handler: async function (req, res) {
493
- return getWebInfor()
494
- },
495
- },
540
+
496
541
  {
497
542
  method: 'GET',
498
543
  path: '/api/getUserByToken', //未登入界面需先檢測token是否為系統管理員, 確認後回傳為系統管理員資訊物件, getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
@@ -520,6 +565,9 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
520
565
 
521
566
  //pm2resolve core
522
567
  let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過, 會提取state進行判斷
568
+ if (isErr(r.msg)) {
569
+ r.msg = r.msg.message
570
+ }
523
571
  // console.log('getUserByToken', r)
524
572
 
525
573
  return r
@@ -555,7 +603,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
555
603
 
556
604
  //pm2resolve core
557
605
  let r = await pm2resolve(core)()
558
- // console.log('verifyIdentity', r)
606
+ if (isErr(r.msg)) {
607
+ r.msg = r.msg.message
608
+ }
609
+ // console.log('getAPIsList', r)
559
610
 
560
611
  return r
561
612
  },
@@ -594,7 +645,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
594
645
 
595
646
  //pm2resolve core
596
647
  let r = await pm2resolve(core)()
597
- // console.log('verifyIdentity', r)
648
+ if (isErr(r.msg)) {
649
+ r.msg = r.msg.message
650
+ }
651
+ // console.log('updateAPIs', r)
598
652
 
599
653
  return r
600
654
  },
@@ -633,7 +687,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
633
687
 
634
688
  //pm2resolve core
635
689
  let r = await pm2resolve(core)()
636
- // console.log('verifyIdentity', r)
690
+ if (isErr(r.msg)) {
691
+ r.msg = r.msg.message
692
+ }
693
+ // console.log('syncAndReplaceApis', r)
637
694
 
638
695
  return r
639
696
  },
@@ -653,7 +710,30 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
653
710
  instWServHapiServer = new WServHapiServer({
654
711
  port: opt.serverPort,
655
712
  pathStaticFiles,
713
+ apiName: 'api',
656
714
  apis,
715
+ tokenType: 'Bearer',
716
+ verifyConn: async ({ apiType, authorization, query, headers, req }) => {
717
+ // console.log('verifyConn', `apiType[${apiType}]`, `authorization[${authorization}]`)
718
+
719
+ //token
720
+ let token = strdelleft(authorization, 7) //刪除Bearer
721
+ // console.log('token', token)
722
+
723
+ //check
724
+ if (!isestr(token)) {
725
+ console.log('apiType', apiType)
726
+ console.log('authorization', authorization)
727
+ console.log('invalid token')
728
+ return false
729
+ }
730
+
731
+ //checkToken
732
+ let b = await p.checkToken(token)
733
+ // console.log('b', b)
734
+
735
+ return b
736
+ },
657
737
  getUserIdByToken: async (token) => { //可使用async或sync函數
658
738
  // console.log('getUserIdByToken', token)
659
739
  return ''
@@ -673,11 +753,17 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
673
753
  methodsExec: ['select', 'insert', 'save', 'del'], //mix需於procOrm內註冊以提供
674
754
  tableNamesSync,
675
755
  kpFunExt: { //接收參數第1個為userId, 之後才是前端給予參數
756
+
676
757
  getWebInfor,
758
+
677
759
  getAPIsList: (userId, query = {}) => {
678
760
  return getAPIsList(query)
679
761
  },
680
- //...
762
+
763
+ // updateApis: (userId, rows) => {
764
+ // return updateApis(rows)
765
+ // },
766
+
681
767
  },
682
768
  fnTableTags: 'tableTags-web-api.json',
683
769
  })