w-web-perm 1.0.6 → 1.0.7

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.
@@ -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#line113">line 113</a>
83
+ <a href="WWebPerm.mjs.html">WWebPerm.mjs</a>, <a href="WWebPerm.mjs.html#line115">line 115</a>
84
84
  </li></ul></dd>
85
85
 
86
86
 
@@ -722,6 +722,46 @@
722
722
 
723
723
 
724
724
 
725
+ <tr>
726
+
727
+ <td class="name"><code>urlRedirect</code></td>
728
+
729
+
730
+ <td class="type">
731
+
732
+
733
+ <span class="param-type">String</span>
734
+
735
+
736
+
737
+
738
+ </td>
739
+
740
+
741
+ <td class="attributes">
742
+
743
+ &lt;optional><br>
744
+
745
+
746
+
747
+
748
+
749
+ </td>
750
+
751
+
752
+
753
+ <td class="default">
754
+
755
+ <code>''</code>
756
+
757
+ </td>
758
+
759
+
760
+ <td class="description last"><p>輸入錯誤時自動轉址字串,提供站台例如無法登入或驗證失敗時須自動轉址,預設''</p></td>
761
+ </tr>
762
+
763
+
764
+
725
765
  <tr>
726
766
 
727
767
  <td class="name"><code>mappingBy</code></td>
@@ -849,7 +889,7 @@
849
889
  <br class="clear">
850
890
 
851
891
  <footer>
852
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Nov 02 2023 11:12:12 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
892
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Nov 02 2023 22:57:24 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
853
893
  </footer>
854
894
 
855
895
  <script>prettyPrint();</script>
@@ -63,6 +63,7 @@ import strright from 'wsemi/src/strright.mjs'
63
63
  import strdelright from 'wsemi/src/strdelright.mjs'
64
64
  import pm2resolve from 'wsemi/src/pm2resolve.mjs'
65
65
  import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
66
+ import fsIsFile from 'wsemi/src/fsIsFile.mjs'
66
67
  import replace from 'wsemi/src/replace.mjs'
67
68
  import WServHapiServer from 'w-serv-hapi/src/WServHapiServer.mjs'
68
69
  import WServOrm from 'w-serv-orm/src/WServOrm.mjs'
@@ -88,6 +89,7 @@ import { getUserRules } from '../src/plugins/mShare.mjs'
88
89
  * @param {Object} [opt.webDescription={}] 輸入站台描述物件,至少包含語系eng與cht鍵的名稱,預設{}
89
90
  * @param {String} [opt.webLogo=''] 輸入站台logo字串,採base64格式,預設''
90
91
  * @param {String} [opt.subfolder=''] 輸入站台所在子目錄字串,提供站台位於內網採反向代理進行服務時,故需支援位於子目錄情形,預設''
92
+ * @param {String} [opt.urlRedirect=''] 輸入錯誤時自動轉址字串,提供站台例如無法登入或驗證失敗時須自動轉址,預設''
91
93
  * @param {String} [opt.mappingBy='email'] 輸入外部系統識別使用者token後所提供之資料物件,與權限系統之使用者資料物件,兩者間查找之對應欄位,可選'id'、'email'、'name',預設'email'
92
94
  * @returns {Object} 回傳物件,其內server為hapi伺服器實體,wsrv為w-converhp的伺服器事件物件,wsds為w-serv-webdata的伺服器事件物件,可監聽error事件
93
95
  * @example
@@ -240,6 +242,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
240
242
  }
241
243
 
242
244
 
245
+ //urlRedirect
246
+ let urlRedirect = get(opt, 'urlRedirect', '')
247
+
248
+
243
249
  //mappingBy
244
250
  let mappingBy = get(opt, 'mappingBy', '')
245
251
  if (mappingBy !== 'id' &amp;&amp; mappingBy !== 'email' &amp;&amp; mappingBy !== 'name') {
@@ -321,7 +327,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
321
327
 
322
328
  //check
323
329
  if (!iseobj(userSelf)) {
324
- console.log(`can not find the user from token`, token)
330
+ console.log(`token`, token)
331
+ console.log(`can not find the user from token`)
325
332
  return Promise.reject(`can not find the user from token`)
326
333
  }
327
334
 
@@ -330,22 +337,26 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
330
337
  let id = get(userSelf, 'id', '')
331
338
  if (!isestr(id)) {
332
339
  console.log('userSelf', userSelf)
340
+ console.log('can not get the userId')
333
341
  return Promise.reject(`can not get the userId`)
334
342
  }
335
343
  let email = get(userSelf, 'email', '')
336
344
  if (!isestr(email)) {
337
345
  console.log('userSelf', userSelf)
346
+ console.log('can not get the email of user')
338
347
  return Promise.reject(`can not get the email of user`)
339
348
  }
340
349
  let name = get(userSelf, 'name', '')
341
350
  if (!isestr(name)) {
342
351
  console.log('userSelf', userSelf)
352
+ console.log('can not get userName')
343
353
  return Promise.reject(`can not get userName`)
344
354
  }
345
355
  let isAdmin = get(userSelf, 'isAdmin', '')
346
356
  if (isAdmin !== 'y' &amp;&amp; isAdmin !== 'n') {
347
357
  console.log('userSelf', userSelf)
348
358
  console.log('userSelf.isAdmin is not y or n', userSelf.isAdmin)
359
+ console.log('can not get the role of user')
349
360
  return Promise.reject(`can not get the role of user`)
350
361
  }
351
362
  }
@@ -358,6 +369,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
358
369
  if (!isestr(vSelf)) {
359
370
  console.log('userSelf', userSelf)
360
371
  console.log('mappingBy', mappingBy)
372
+ console.log('can not get the prop of user by mappingBy')
361
373
  return Promise.reject(`can not get the prop of user by mappingBy`)
362
374
  }
363
375
 
@@ -370,6 +382,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
370
382
  if (!iseobj(userFind)) {
371
383
  console.log('userSelf', userSelf)
372
384
  console.log('mappingBy', mappingBy)
385
+ console.log('can not get the user from perm')
373
386
  return Promise.reject(`can not get the user from perm`)
374
387
  }
375
388
 
@@ -390,7 +403,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
390
403
  //check
391
404
  if (!b) {
392
405
  console.log('userSelf', userSelf)
393
- console.log('verifyUser/userFind', userFind)
406
+ console.log('userFind', userFind)
407
+ console.log('user does not have permission')
394
408
  return Promise.reject(`user does not have permission`)
395
409
  }
396
410
 
@@ -400,6 +414,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
400
414
 
401
415
  //parsePayload
402
416
  let parsePayload = async (req, key) => {
417
+
418
+ //inp
403
419
  let inp = get(req, 'payload')
404
420
 
405
421
  //to obj
@@ -410,6 +426,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
410
426
  //check
411
427
  if (!iseobj(inp)) {
412
428
  console.log('inp', inp)
429
+ console.log('invalid inp from req')
413
430
  return Promise.reject(`invalid inp from req`)
414
431
  }
415
432
 
@@ -420,6 +437,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
420
437
  if (!isestr(from)) {
421
438
  console.log('inp', inp)
422
439
  console.log('from', from)
440
+ console.log('invalid from from inp')
423
441
  return Promise.reject(`invalid from from inp`)
424
442
  }
425
443
 
@@ -434,6 +452,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
434
452
  if (!isearr(vs)) {
435
453
  console.log('inp', inp)
436
454
  console.log(key, vs)
455
+ console.log(`invalid ${key} from inp`)
437
456
  return Promise.reject(`invalid ${key} from inp`)
438
457
  }
439
458
 
@@ -458,6 +477,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
458
477
  if (!isestr(from)) {
459
478
  console.log('params', params)
460
479
  console.log('from', from)
480
+ console.log(`invalid from`)
461
481
  return Promise.reject(`invalid from`)
462
482
  }
463
483
 
@@ -469,6 +489,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
469
489
  if (!isearr(vs)) {
470
490
  console.log('params', params)
471
491
  console.log(key, vs)
492
+ console.log(`invalid ${key}`)
472
493
  return Promise.reject(`invalid ${key}`)
473
494
  }
474
495
 
@@ -539,7 +560,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
539
560
 
540
561
  //check
541
562
  if (!iseobj(urs)) {
542
- console.log('can not get permrules', userId)
563
+ console.log('userId', userId)
564
+ console.log(`can not get permrules`)
543
565
  return Promise.reject(`can not get permrules`)
544
566
  }
545
567
 
@@ -567,9 +589,18 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
567
589
  let fnEntryOut = 'index.html'
568
590
  try {
569
591
  let fpEntryIn = path.resolve(pathStaticFiles, fnEntryIn)
592
+ if (!fsIsFile(fpEntryIn)) {
593
+ fpEntryIn = path.resolve(pathStaticFiles, fnEntryOut) //本機開發另使用html替代tmp
594
+ }
595
+ if (!fsIsFile(fpEntryIn)) {
596
+ console.log('fpEntryIn', fpEntryIn)
597
+ throw new Error(`invalid fpEntryIn`)
598
+ }
570
599
  let fpEntryOut = path.resolve(pathStaticFiles, fnEntryOut)
571
600
  let c = fs.readFileSync(fpEntryIn, 'utf8')
601
+ c = replace(c, '/mperm/', '{sfd}/') //方法同genEntry
572
602
  c = replace(c, '{sfd}', subfolder)
603
+ c = replace(c, '{urlRedirect}', urlRedirect)
573
604
  fs.writeFileSync(fpEntryOut, c, 'utf8')
574
605
  }
575
606
  catch (err) {
@@ -619,6 +650,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
619
650
  if (!iseobj(userSelf)) {
620
651
  console.log('token', token)
621
652
  console.log('[API]getUserByToken/check userSelf: invalid userSelf')
653
+ console.log(`token does not have permission`)
622
654
  return Promise.reject(`token does not have permission`)
623
655
  }
624
656
 
@@ -658,6 +690,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
658
690
  if (!iseobj(userLogin)) {
659
691
  console.log('token', token)
660
692
  console.log('[API]getPerm/check userLogin: invalid userLogin')
693
+ console.log(`token does not have permission`)
661
694
  return Promise.reject(`token does not have permission`)
662
695
  }
663
696
 
@@ -669,6 +702,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
669
702
  if (!isestr(userId)) {
670
703
  console.log('userLogin', userLogin)
671
704
  console.log('[API]getPerm/check userId: invalid userId')
705
+ console.log(`token does not have permission`)
672
706
  return Promise.reject(`token does not have permission`)
673
707
  }
674
708
 
@@ -680,6 +714,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
680
714
  if (!iseobj(r)) {
681
715
  console.log('userLogin', userLogin)
682
716
  console.log('[API]getPerm/getGenUserAndRulesByUserId: user does not have permrules')
717
+ console.log(`token does not have permission`)
683
718
  return Promise.reject(`token does not have permission`)
684
719
  }
685
720
 
@@ -714,6 +749,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
714
749
  if (!iseobj(userSelf)) {
715
750
  console.log('token', token)
716
751
  console.log('[API]getPermById/check userSelf: invalid userSelf')
752
+ console.log(`token does not have permission`)
717
753
  return Promise.reject(`token does not have permission`)
718
754
  }
719
755
 
@@ -734,6 +770,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
734
770
  if (!iseobj(r)) {
735
771
  console.log('userSelf', userSelf)
736
772
  console.log('[API]getPermById/getGenUserAndRulesByUserId: user does not have permrules')
773
+ console.log(`user does not have permrules`)
737
774
  return Promise.reject(`user does not have permrules`)
738
775
  }
739
776
 
@@ -766,6 +803,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
766
803
  if (!iseobj(user)) {
767
804
  console.log('token', token)
768
805
  console.log('[API]syncAndReplaceUsers/check user: invalid user')
806
+ console.log(`token does not have permission`)
769
807
  return Promise.reject(`token does not have permission`)
770
808
  }
771
809
 
@@ -804,6 +842,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
804
842
  if (!iseobj(user)) {
805
843
  console.log('token', token)
806
844
  console.log('[API]syncAndReplaceTargets/check user: invalid user')
845
+ console.log(`token does not have permission`)
807
846
  return Promise.reject(`token does not have permission`)
808
847
  }
809
848
 
@@ -842,6 +881,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
842
881
  if (!iseobj(user)) {
843
882
  console.log('token', token)
844
883
  console.log('[API]syncAndReplaceRuleGroups/check user: invalid user')
884
+ console.log(`token does not have permission`)
845
885
  return Promise.reject(`token does not have permission`)
846
886
  }
847
887
 
@@ -918,7 +958,7 @@ export default WWebPerm
918
958
  <br class="clear">
919
959
 
920
960
  <footer>
921
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Nov 02 2023 11:12:12 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
961
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Nov 02 2023 22:57:24 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
922
962
  </footer>
923
963
 
924
964
  <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 Thu Nov 02 2023 11:12:12 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 Thu Nov 02 2023 22:57:24 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,6 +1,6 @@
1
1
  {
2
2
  "name": "w-web-perm",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "main": "dist/w-web-perm.umd.js",
5
5
  "dependencies": {
6
6
  "@mdi/js": "^7.2.96",
package/public/index.html CHANGED
@@ -12,6 +12,13 @@
12
12
  <!-- fontawesome -->
13
13
  <link href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css" rel="stylesheet">
14
14
 
15
+ <!-- ___pmwperm___ -->
16
+ <script>
17
+ window.___pmwperm___={
18
+ urlRedirect: '{urlRedirect}',
19
+ }
20
+ </script>
21
+
15
22
  </head>
16
23
  <body style="font-family:'Microsoft JhengHei','Avenir','Helvetica', 'Arial', 'sans-serif'; padding:0px; margin:0px;">
17
24
  <noscript>
@@ -16,6 +16,7 @@ import strright from 'wsemi/src/strright.mjs'
16
16
  import strdelright from 'wsemi/src/strdelright.mjs'
17
17
  import pm2resolve from 'wsemi/src/pm2resolve.mjs'
18
18
  import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
19
+ import fsIsFile from 'wsemi/src/fsIsFile.mjs'
19
20
  import replace from 'wsemi/src/replace.mjs'
20
21
  import WServHapiServer from 'w-serv-hapi/src/WServHapiServer.mjs'
21
22
  import WServOrm from 'w-serv-orm/src/WServOrm.mjs'
@@ -41,6 +42,7 @@ import { getUserRules } from '../src/plugins/mShare.mjs'
41
42
  * @param {Object} [opt.webDescription={}] 輸入站台描述物件,至少包含語系eng與cht鍵的名稱,預設{}
42
43
  * @param {String} [opt.webLogo=''] 輸入站台logo字串,採base64格式,預設''
43
44
  * @param {String} [opt.subfolder=''] 輸入站台所在子目錄字串,提供站台位於內網採反向代理進行服務時,故需支援位於子目錄情形,預設''
45
+ * @param {String} [opt.urlRedirect=''] 輸入錯誤時自動轉址字串,提供站台例如無法登入或驗證失敗時須自動轉址,預設''
44
46
  * @param {String} [opt.mappingBy='email'] 輸入外部系統識別使用者token後所提供之資料物件,與權限系統之使用者資料物件,兩者間查找之對應欄位,可選'id'、'email'、'name',預設'email'
45
47
  * @returns {Object} 回傳物件,其內server為hapi伺服器實體,wsrv為w-converhp的伺服器事件物件,wsds為w-serv-webdata的伺服器事件物件,可監聽error事件
46
48
  * @example
@@ -193,6 +195,10 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
193
195
  }
194
196
 
195
197
 
198
+ //urlRedirect
199
+ let urlRedirect = get(opt, 'urlRedirect', '')
200
+
201
+
196
202
  //mappingBy
197
203
  let mappingBy = get(opt, 'mappingBy', '')
198
204
  if (mappingBy !== 'id' && mappingBy !== 'email' && mappingBy !== 'name') {
@@ -274,7 +280,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
274
280
 
275
281
  //check
276
282
  if (!iseobj(userSelf)) {
277
- console.log(`can not find the user from token`, token)
283
+ console.log(`token`, token)
284
+ console.log(`can not find the user from token`)
278
285
  return Promise.reject(`can not find the user from token`)
279
286
  }
280
287
 
@@ -283,22 +290,26 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
283
290
  let id = get(userSelf, 'id', '')
284
291
  if (!isestr(id)) {
285
292
  console.log('userSelf', userSelf)
293
+ console.log('can not get the userId')
286
294
  return Promise.reject(`can not get the userId`)
287
295
  }
288
296
  let email = get(userSelf, 'email', '')
289
297
  if (!isestr(email)) {
290
298
  console.log('userSelf', userSelf)
299
+ console.log('can not get the email of user')
291
300
  return Promise.reject(`can not get the email of user`)
292
301
  }
293
302
  let name = get(userSelf, 'name', '')
294
303
  if (!isestr(name)) {
295
304
  console.log('userSelf', userSelf)
305
+ console.log('can not get userName')
296
306
  return Promise.reject(`can not get userName`)
297
307
  }
298
308
  let isAdmin = get(userSelf, 'isAdmin', '')
299
309
  if (isAdmin !== 'y' && isAdmin !== 'n') {
300
310
  console.log('userSelf', userSelf)
301
311
  console.log('userSelf.isAdmin is not y or n', userSelf.isAdmin)
312
+ console.log('can not get the role of user')
302
313
  return Promise.reject(`can not get the role of user`)
303
314
  }
304
315
  }
@@ -311,6 +322,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
311
322
  if (!isestr(vSelf)) {
312
323
  console.log('userSelf', userSelf)
313
324
  console.log('mappingBy', mappingBy)
325
+ console.log('can not get the prop of user by mappingBy')
314
326
  return Promise.reject(`can not get the prop of user by mappingBy`)
315
327
  }
316
328
 
@@ -323,6 +335,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
323
335
  if (!iseobj(userFind)) {
324
336
  console.log('userSelf', userSelf)
325
337
  console.log('mappingBy', mappingBy)
338
+ console.log('can not get the user from perm')
326
339
  return Promise.reject(`can not get the user from perm`)
327
340
  }
328
341
 
@@ -343,7 +356,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
343
356
  //check
344
357
  if (!b) {
345
358
  console.log('userSelf', userSelf)
346
- console.log('verifyUser/userFind', userFind)
359
+ console.log('userFind', userFind)
360
+ console.log('user does not have permission')
347
361
  return Promise.reject(`user does not have permission`)
348
362
  }
349
363
 
@@ -353,6 +367,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
353
367
 
354
368
  //parsePayload
355
369
  let parsePayload = async (req, key) => {
370
+
371
+ //inp
356
372
  let inp = get(req, 'payload')
357
373
 
358
374
  //to obj
@@ -363,6 +379,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
363
379
  //check
364
380
  if (!iseobj(inp)) {
365
381
  console.log('inp', inp)
382
+ console.log('invalid inp from req')
366
383
  return Promise.reject(`invalid inp from req`)
367
384
  }
368
385
 
@@ -373,6 +390,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
373
390
  if (!isestr(from)) {
374
391
  console.log('inp', inp)
375
392
  console.log('from', from)
393
+ console.log('invalid from from inp')
376
394
  return Promise.reject(`invalid from from inp`)
377
395
  }
378
396
 
@@ -387,6 +405,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
387
405
  if (!isearr(vs)) {
388
406
  console.log('inp', inp)
389
407
  console.log(key, vs)
408
+ console.log(`invalid ${key} from inp`)
390
409
  return Promise.reject(`invalid ${key} from inp`)
391
410
  }
392
411
 
@@ -411,6 +430,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
411
430
  if (!isestr(from)) {
412
431
  console.log('params', params)
413
432
  console.log('from', from)
433
+ console.log(`invalid from`)
414
434
  return Promise.reject(`invalid from`)
415
435
  }
416
436
 
@@ -422,6 +442,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
422
442
  if (!isearr(vs)) {
423
443
  console.log('params', params)
424
444
  console.log(key, vs)
445
+ console.log(`invalid ${key}`)
425
446
  return Promise.reject(`invalid ${key}`)
426
447
  }
427
448
 
@@ -492,7 +513,8 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
492
513
 
493
514
  //check
494
515
  if (!iseobj(urs)) {
495
- console.log('can not get permrules', userId)
516
+ console.log('userId', userId)
517
+ console.log(`can not get permrules`)
496
518
  return Promise.reject(`can not get permrules`)
497
519
  }
498
520
 
@@ -520,9 +542,18 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
520
542
  let fnEntryOut = 'index.html'
521
543
  try {
522
544
  let fpEntryIn = path.resolve(pathStaticFiles, fnEntryIn)
545
+ if (!fsIsFile(fpEntryIn)) {
546
+ fpEntryIn = path.resolve(pathStaticFiles, fnEntryOut) //本機開發另使用html替代tmp
547
+ }
548
+ if (!fsIsFile(fpEntryIn)) {
549
+ console.log('fpEntryIn', fpEntryIn)
550
+ throw new Error(`invalid fpEntryIn`)
551
+ }
523
552
  let fpEntryOut = path.resolve(pathStaticFiles, fnEntryOut)
524
553
  let c = fs.readFileSync(fpEntryIn, 'utf8')
554
+ c = replace(c, '/mperm/', '{sfd}/') //方法同genEntry
525
555
  c = replace(c, '{sfd}', subfolder)
556
+ c = replace(c, '{urlRedirect}', urlRedirect)
526
557
  fs.writeFileSync(fpEntryOut, c, 'utf8')
527
558
  }
528
559
  catch (err) {
@@ -572,6 +603,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
572
603
  if (!iseobj(userSelf)) {
573
604
  console.log('token', token)
574
605
  console.log('[API]getUserByToken/check userSelf: invalid userSelf')
606
+ console.log(`token does not have permission`)
575
607
  return Promise.reject(`token does not have permission`)
576
608
  }
577
609
 
@@ -611,6 +643,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
611
643
  if (!iseobj(userLogin)) {
612
644
  console.log('token', token)
613
645
  console.log('[API]getPerm/check userLogin: invalid userLogin')
646
+ console.log(`token does not have permission`)
614
647
  return Promise.reject(`token does not have permission`)
615
648
  }
616
649
 
@@ -622,6 +655,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
622
655
  if (!isestr(userId)) {
623
656
  console.log('userLogin', userLogin)
624
657
  console.log('[API]getPerm/check userId: invalid userId')
658
+ console.log(`token does not have permission`)
625
659
  return Promise.reject(`token does not have permission`)
626
660
  }
627
661
 
@@ -633,6 +667,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
633
667
  if (!iseobj(r)) {
634
668
  console.log('userLogin', userLogin)
635
669
  console.log('[API]getPerm/getGenUserAndRulesByUserId: user does not have permrules')
670
+ console.log(`token does not have permission`)
636
671
  return Promise.reject(`token does not have permission`)
637
672
  }
638
673
 
@@ -667,6 +702,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
667
702
  if (!iseobj(userSelf)) {
668
703
  console.log('token', token)
669
704
  console.log('[API]getPermById/check userSelf: invalid userSelf')
705
+ console.log(`token does not have permission`)
670
706
  return Promise.reject(`token does not have permission`)
671
707
  }
672
708
 
@@ -687,6 +723,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
687
723
  if (!iseobj(r)) {
688
724
  console.log('userSelf', userSelf)
689
725
  console.log('[API]getPermById/getGenUserAndRulesByUserId: user does not have permrules')
726
+ console.log(`user does not have permrules`)
690
727
  return Promise.reject(`user does not have permrules`)
691
728
  }
692
729
 
@@ -719,6 +756,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
719
756
  if (!iseobj(user)) {
720
757
  console.log('token', token)
721
758
  console.log('[API]syncAndReplaceUsers/check user: invalid user')
759
+ console.log(`token does not have permission`)
722
760
  return Promise.reject(`token does not have permission`)
723
761
  }
724
762
 
@@ -757,6 +795,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
757
795
  if (!iseobj(user)) {
758
796
  console.log('token', token)
759
797
  console.log('[API]syncAndReplaceTargets/check user: invalid user')
798
+ console.log(`token does not have permission`)
760
799
  return Promise.reject(`token does not have permission`)
761
800
  }
762
801
 
@@ -795,6 +834,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, verifyUser, opt = {}) {
795
834
  if (!iseobj(user)) {
796
835
  console.log('token', token)
797
836
  console.log('[API]syncAndReplaceRuleGroups/check user: invalid user')
837
+ console.log(`token does not have permission`)
798
838
  return Promise.reject(`token does not have permission`)
799
839
  }
800
840
 
package/src/App.vue CHANGED
@@ -22,6 +22,8 @@
22
22
  <script>
23
23
  import get from 'lodash/get'
24
24
  import cloneDeep from 'lodash/cloneDeep'
25
+ import isestr from 'wsemi/src/isestr.mjs'
26
+ import isDev from 'wsemi/src/isDev.mjs'
25
27
  import wui from 'w-ui-loginout/src/WUiLoginout.mjs'
26
28
  import LoadingWinBar from './components/Common/LoadingWinBar.vue'
27
29
  import CheckYesNo from './components/Common/CheckYesNo.vue'
@@ -64,7 +66,20 @@ export default {
64
66
  console.log('login error', cloneDeep(data))
65
67
  vo.$ui.updateConnState(data.text)
66
68
  vo.$ui.updateUserToken('')
67
- vo.$ui.updateUserSelf(get(vo, `$store.state.userDef`))
69
+ let urlRedirect = get(window, '___pmwperm___.urlRedirect', '')
70
+ if (!isestr(urlRedirect)) {
71
+ console.log('urlRedirect', urlRedirect)
72
+ throw new Error(`invalid urlRedirect`)
73
+ }
74
+ if (isDev()) {
75
+ console.log('60s redirect to:', urlRedirect)
76
+ setTimeout(() => {
77
+ window.location.href = urlRedirect
78
+ }, 60 * 1000)
79
+ }
80
+ else {
81
+ window.location.href = urlRedirect
82
+ }
68
83
  }
69
84
 
70
85
  //login
@@ -1,19 +1,9 @@
1
1
  import each from 'lodash/each'
2
2
  import set from 'lodash/set'
3
- import cloneDeep from 'lodash/cloneDeep'
4
3
  import * as types from './types.mjs'
5
4
  import ds from '../schema/index.mjs'
6
5
 
7
6
 
8
- //userDef
9
- let userDef = {
10
- id: '', //id-for-admin
11
- name: '', //測試者
12
- email: '', //admin@example.com
13
- isAdmin: 'n',
14
- // isActive: 'n',
15
- }
16
-
17
7
  //state, 全域狀態
18
8
  let state = {
19
9
 
@@ -34,8 +24,12 @@ let state = {
34
24
  menu: {}, //初始值需為物件, 否則LayoutContent會取menu.key出錯
35
25
 
36
26
  userToken: '',
37
- userDef: cloneDeep(userDef),
38
- userSelf: cloneDeep(userDef),
27
+ user: {
28
+ id: '', //id-for-admin
29
+ name: '', //測試者
30
+ email: '', //admin@example.com
31
+ isAdmin: 'n',
32
+ },
39
33
 
40
34
  lang: 'cht',
41
35
  keyLangs: {
package/srv.mjs CHANGED
@@ -16,6 +16,7 @@ let opt = {
16
16
 
17
17
  serverPort: 11006,
18
18
  subfolder: '', //mperm
19
+ urlRedirect: 'https://www.google.com/', //本機測試時得先編譯, 再瀏覽: http://localhost:11006/
19
20
 
20
21
  webName: {
21
22
  'eng': 'Permission Service',
@@ -35,7 +36,7 @@ let getUserByToken = async (token) => {
35
36
  return {
36
37
  id: 'id-for-application',
37
38
  name: 'application',
38
- email: 'admin@example.com',
39
+ email: 'application@example.com',
39
40
  isAdmin: 'y',
40
41
  }
41
42
  }
@@ -43,7 +44,7 @@ let getUserByToken = async (token) => {
43
44
  return {
44
45
  id: 'id-for-admin',
45
46
  name: 'tester',
46
- email: 'admin@example.com',
47
+ email: 'admin@example.com', //mappingBy為email, 開發階段時會使用email找到所建置之使用者資料
47
48
  isAdmin: 'y',
48
49
  }
49
50
  }
@@ -53,6 +54,7 @@ let getUserByToken = async (token) => {
53
54
  }
54
55
 
55
56
  let verifyUser = (user) => {
57
+ // return false //測試無法登入
56
58
  console.log('於生產環境時得加入驗證user機制')
57
59
  return user.isAdmin === 'y' //測試僅系統管理者使用
58
60
  }