w-web-perm 1.0.0 → 1.0.2
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/README.md +58 -0
- package/dist/css/{chunk-vendors.65775501.css → chunk-vendors.1c6c57f9.css} +1 -1
- package/dist/index.tmp +1 -1
- package/dist/js/app-legacy.317de647.js +2 -0
- package/dist/js/app-legacy.317de647.js.map +1 -0
- package/dist/js/app.94cdbe9a.js +2 -0
- package/dist/js/app.94cdbe9a.js.map +1 -0
- package/dist/js/chunk-vendors-legacy.a074d0c0.js +13 -0
- package/dist/js/chunk-vendors-legacy.a074d0c0.js.map +1 -0
- package/dist/js/chunk-vendors.a074d0c0.js +13 -0
- package/dist/js/chunk-vendors.a074d0c0.js.map +1 -0
- package/dist/w-web-perm.umd.js +2 -2
- package/dist/w-web-perm.umd.js.map +1 -1
- package/docs/WWebPerm.html +1 -1
- package/docs/WWebPerm.mjs.html +61 -11
- package/docs/index.html +1 -1
- package/package.json +5 -4
- package/server/WWebPerm.mjs +60 -10
- package/src/components/LayoutContentGroups.vue +3 -2
- package/src/components/LayoutContentTargets.vue +9 -2
- package/src/components/VeUser.vue +5 -4
- package/src/components/ruleGroup.vue +6 -28
- package/src/perm.mjs +92 -44
- package/src/plugins/mShare.mjs +23 -155
- package/src/schema/tables/ruleGroups.mjs +2 -3
- package/src/schema/tables/targets.mjs +25 -32
- package/src/schema/tables/users.mjs +1 -1
- package/src/store/mutations.mjs +1 -1
- package/srv.mjs +24 -7
- package/tableTags-web-perm.json +1 -1
- package/dist/js/app-legacy.954e168c.js +0 -2
- package/dist/js/app-legacy.954e168c.js.map +0 -1
- package/dist/js/app.954e168c.js +0 -2
- package/dist/js/app.954e168c.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.f5f1a231.js +0 -13
- package/dist/js/chunk-vendors-legacy.f5f1a231.js.map +0 -1
- package/dist/js/chunk-vendors.f5f1a231.js +0 -13
- package/dist/js/chunk-vendors.f5f1a231.js.map +0 -1
package/docs/WWebPerm.html
CHANGED
|
@@ -813,7 +813,7 @@
|
|
|
813
813
|
<br class="clear">
|
|
814
814
|
|
|
815
815
|
<footer>
|
|
816
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
816
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sun Jul 30 2023 21:50:08 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
817
817
|
</footer>
|
|
818
818
|
|
|
819
819
|
<script>prettyPrint();</script>
|
package/docs/WWebPerm.mjs.html
CHANGED
|
@@ -286,7 +286,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
286
286
|
//userFind
|
|
287
287
|
let userFind = await woItems.users.select({ [mappingBy]: vSelf, isActive: 'y' })
|
|
288
288
|
userFind = get(userFind, 0, null)
|
|
289
|
-
console.log('userFind', userFind)
|
|
289
|
+
// console.log('userFind', userFind)
|
|
290
290
|
|
|
291
291
|
//複寫isAdmin
|
|
292
292
|
let isAdminSrc = get(userSelf, 'isAdmin', '')
|
|
@@ -294,7 +294,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
294
294
|
if (isAdminSrc !== isAdminSelf) {
|
|
295
295
|
userFind.isAdmin = isAdminSelf
|
|
296
296
|
}
|
|
297
|
-
console.log('userFind(isAdmin)', userFind)
|
|
297
|
+
// console.log('userFind(isAdmin)', userFind)
|
|
298
298
|
|
|
299
299
|
return userFind
|
|
300
300
|
}
|
|
@@ -339,7 +339,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
339
339
|
// console.log('userFind', userFind)
|
|
340
340
|
|
|
341
341
|
//ruleGroups
|
|
342
|
-
let ruleGroups = await woItems.ruleGroups.select(
|
|
342
|
+
let ruleGroups = await woItems.ruleGroups.select()
|
|
343
343
|
// console.log('ruleGroups', ruleGroups)
|
|
344
344
|
|
|
345
345
|
//targets
|
|
@@ -357,8 +357,11 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
357
357
|
}
|
|
358
358
|
|
|
359
359
|
return {
|
|
360
|
-
user:
|
|
361
|
-
|
|
360
|
+
user: {
|
|
361
|
+
...userFind,
|
|
362
|
+
ruleGroupsNames: urs.ruleGroupsNames, //ruleGroupsNames併入user內顯示
|
|
363
|
+
},
|
|
364
|
+
rules: urs.rules,
|
|
362
365
|
}
|
|
363
366
|
}
|
|
364
367
|
|
|
@@ -410,11 +413,12 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
410
413
|
},
|
|
411
414
|
{
|
|
412
415
|
method: 'GET',
|
|
413
|
-
path: '/api/getUserByToken',
|
|
416
|
+
path: '/api/getUserByToken', //名稱getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
|
|
414
417
|
handler: async function (req, res) {
|
|
415
|
-
// console.log('
|
|
418
|
+
// console.log('getUserByToken', req)
|
|
416
419
|
|
|
417
420
|
async function core() {
|
|
421
|
+
//提供對象為browser使用者, 且認定權限系統須系統管理員才能使用, 須先檢測token是否為系統管理員, 確認後回傳該使用者(系統管理員)資訊物件
|
|
418
422
|
|
|
419
423
|
//token
|
|
420
424
|
let token = get(req, 'query.token', '')
|
|
@@ -425,7 +429,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
425
429
|
// console.log('userSelf', userSelf)
|
|
426
430
|
|
|
427
431
|
//check
|
|
428
|
-
if (get(userSelf, 'isAdmin') !== 'y') {
|
|
432
|
+
if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
|
|
429
433
|
return Promise.reject(`user does not have permission`)
|
|
430
434
|
}
|
|
431
435
|
|
|
@@ -433,7 +437,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
433
437
|
}
|
|
434
438
|
|
|
435
439
|
//pm2resolve core
|
|
436
|
-
let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過,
|
|
440
|
+
let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過, 須另提取state進行判斷
|
|
437
441
|
// console.log('getUserByToken', r)
|
|
438
442
|
|
|
439
443
|
return r
|
|
@@ -441,11 +445,12 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
441
445
|
},
|
|
442
446
|
{
|
|
443
447
|
method: 'GET',
|
|
444
|
-
path: '/api/getPerm',
|
|
448
|
+
path: '/api/getPerm',
|
|
445
449
|
handler: async function (req, res) {
|
|
446
450
|
// console.log('getPerm', req)
|
|
447
451
|
|
|
448
452
|
async function core() {
|
|
453
|
+
//提供對象為node與browser使用者, 須先檢測token是否有效, 再依照token取得使用者資訊物件, 再由其userId查詢回傳該使用者權限資訊物件
|
|
449
454
|
|
|
450
455
|
//parseToken
|
|
451
456
|
let token = parseToken(req)
|
|
@@ -485,6 +490,51 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
485
490
|
let r = await pm2resolve(core)()
|
|
486
491
|
// console.log('getPerm r', r)
|
|
487
492
|
|
|
493
|
+
return r
|
|
494
|
+
},
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
method: 'GET',
|
|
498
|
+
path: '/api/getPermById',
|
|
499
|
+
handler: async function (req, res) {
|
|
500
|
+
// console.log('getPermById', req)
|
|
501
|
+
|
|
502
|
+
async function core() {
|
|
503
|
+
//提供對象為node使用者, 且認定權限系統須系統管理員才能使用, 須先檢測token是否為系統管理員, 再由query取得欲查詢的使用者userId, 再由其userId查詢回傳該使用者權限資訊物件
|
|
504
|
+
|
|
505
|
+
//token
|
|
506
|
+
let token = get(req, 'query.token', '')
|
|
507
|
+
// console.log('token', token)
|
|
508
|
+
|
|
509
|
+
//getGenUserByUserId
|
|
510
|
+
let userSelf = await getTokenUserForSelf(token)
|
|
511
|
+
// console.log('userSelf', userSelf)
|
|
512
|
+
|
|
513
|
+
//check
|
|
514
|
+
if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
|
|
515
|
+
return Promise.reject(`user does not have permission`)
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
//userId
|
|
519
|
+
let userId = get(req, 'query.userId', '')
|
|
520
|
+
// console.log('userId', userId)
|
|
521
|
+
|
|
522
|
+
//getGenUserAndRulesByUserId
|
|
523
|
+
let r = await getGenUserAndRulesByUserId(userId)
|
|
524
|
+
// console.log('getGenUserAndRulesByUserId', r)
|
|
525
|
+
|
|
526
|
+
//check
|
|
527
|
+
if (!iseobj(r)) {
|
|
528
|
+
return Promise.reject(`user does not have permrules`)
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return r
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
//pm2resolve core
|
|
535
|
+
let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過, 須另提取state進行判斷
|
|
536
|
+
// console.log('getUserByToken', r)
|
|
537
|
+
|
|
488
538
|
return r
|
|
489
539
|
},
|
|
490
540
|
},
|
|
@@ -545,7 +595,7 @@ export default WWebPerm
|
|
|
545
595
|
<br class="clear">
|
|
546
596
|
|
|
547
597
|
<footer>
|
|
548
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
598
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sun Jul 30 2023 21:50:08 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
549
599
|
</footer>
|
|
550
600
|
|
|
551
601
|
<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 30 2023 21:50:08 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,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-web-perm",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"main": "dist/w-web-perm.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@mdi/js": "^7.2.96",
|
|
7
7
|
"axios": "^1.3.4",
|
|
8
|
+
"json5": "^2.2.3",
|
|
8
9
|
"lodash": "^4.17.21",
|
|
9
10
|
"showdown": "^2.1.0",
|
|
10
|
-
"w-component-vue": "^2.3.
|
|
11
|
+
"w-component-vue": "^2.3.18",
|
|
11
12
|
"w-data-collector": "^1.0.19",
|
|
12
13
|
"w-serv-hapi": "^1.0.11",
|
|
13
14
|
"w-serv-orm": "^1.0.7",
|
|
14
15
|
"w-ui-loginout": "^1.0.4",
|
|
15
|
-
"wsemi": "^1.7.
|
|
16
|
+
"wsemi": "^1.7.19"
|
|
16
17
|
},
|
|
17
18
|
"devDependencies": {
|
|
18
19
|
"@vue/cli-plugin-babel": "^5.0.8",
|
|
@@ -72,4 +73,4 @@
|
|
|
72
73
|
],
|
|
73
74
|
"author": "yuda-lyu(semisphere)",
|
|
74
75
|
"license": "MIT"
|
|
75
|
-
}
|
|
76
|
+
}
|
package/server/WWebPerm.mjs
CHANGED
|
@@ -239,7 +239,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
239
239
|
//userFind
|
|
240
240
|
let userFind = await woItems.users.select({ [mappingBy]: vSelf, isActive: 'y' })
|
|
241
241
|
userFind = get(userFind, 0, null)
|
|
242
|
-
console.log('userFind', userFind)
|
|
242
|
+
// console.log('userFind', userFind)
|
|
243
243
|
|
|
244
244
|
//複寫isAdmin
|
|
245
245
|
let isAdminSrc = get(userSelf, 'isAdmin', '')
|
|
@@ -247,7 +247,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
247
247
|
if (isAdminSrc !== isAdminSelf) {
|
|
248
248
|
userFind.isAdmin = isAdminSelf
|
|
249
249
|
}
|
|
250
|
-
console.log('userFind(isAdmin)', userFind)
|
|
250
|
+
// console.log('userFind(isAdmin)', userFind)
|
|
251
251
|
|
|
252
252
|
return userFind
|
|
253
253
|
}
|
|
@@ -292,7 +292,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
292
292
|
// console.log('userFind', userFind)
|
|
293
293
|
|
|
294
294
|
//ruleGroups
|
|
295
|
-
let ruleGroups = await woItems.ruleGroups.select(
|
|
295
|
+
let ruleGroups = await woItems.ruleGroups.select()
|
|
296
296
|
// console.log('ruleGroups', ruleGroups)
|
|
297
297
|
|
|
298
298
|
//targets
|
|
@@ -310,8 +310,11 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
310
310
|
}
|
|
311
311
|
|
|
312
312
|
return {
|
|
313
|
-
user:
|
|
314
|
-
|
|
313
|
+
user: {
|
|
314
|
+
...userFind,
|
|
315
|
+
ruleGroupsNames: urs.ruleGroupsNames, //ruleGroupsNames併入user內顯示
|
|
316
|
+
},
|
|
317
|
+
rules: urs.rules,
|
|
315
318
|
}
|
|
316
319
|
}
|
|
317
320
|
|
|
@@ -363,11 +366,12 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
363
366
|
},
|
|
364
367
|
{
|
|
365
368
|
method: 'GET',
|
|
366
|
-
path: '/api/getUserByToken',
|
|
369
|
+
path: '/api/getUserByToken', //名稱getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
|
|
367
370
|
handler: async function (req, res) {
|
|
368
|
-
// console.log('
|
|
371
|
+
// console.log('getUserByToken', req)
|
|
369
372
|
|
|
370
373
|
async function core() {
|
|
374
|
+
//提供對象為browser使用者, 且認定權限系統須系統管理員才能使用, 須先檢測token是否為系統管理員, 確認後回傳該使用者(系統管理員)資訊物件
|
|
371
375
|
|
|
372
376
|
//token
|
|
373
377
|
let token = get(req, 'query.token', '')
|
|
@@ -378,7 +382,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
378
382
|
// console.log('userSelf', userSelf)
|
|
379
383
|
|
|
380
384
|
//check
|
|
381
|
-
if (get(userSelf, 'isAdmin') !== 'y') {
|
|
385
|
+
if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
|
|
382
386
|
return Promise.reject(`user does not have permission`)
|
|
383
387
|
}
|
|
384
388
|
|
|
@@ -386,7 +390,7 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
386
390
|
}
|
|
387
391
|
|
|
388
392
|
//pm2resolve core
|
|
389
|
-
let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過,
|
|
393
|
+
let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過, 須另提取state進行判斷
|
|
390
394
|
// console.log('getUserByToken', r)
|
|
391
395
|
|
|
392
396
|
return r
|
|
@@ -394,11 +398,12 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
394
398
|
},
|
|
395
399
|
{
|
|
396
400
|
method: 'GET',
|
|
397
|
-
path: '/api/getPerm',
|
|
401
|
+
path: '/api/getPerm',
|
|
398
402
|
handler: async function (req, res) {
|
|
399
403
|
// console.log('getPerm', req)
|
|
400
404
|
|
|
401
405
|
async function core() {
|
|
406
|
+
//提供對象為node與browser使用者, 須先檢測token是否有效, 再依照token取得使用者資訊物件, 再由其userId查詢回傳該使用者權限資訊物件
|
|
402
407
|
|
|
403
408
|
//parseToken
|
|
404
409
|
let token = parseToken(req)
|
|
@@ -438,6 +443,51 @@ function WWebPerm(WOrm, url, db, getUserByToken, opt = {}) {
|
|
|
438
443
|
let r = await pm2resolve(core)()
|
|
439
444
|
// console.log('getPerm r', r)
|
|
440
445
|
|
|
446
|
+
return r
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
method: 'GET',
|
|
451
|
+
path: '/api/getPermById',
|
|
452
|
+
handler: async function (req, res) {
|
|
453
|
+
// console.log('getPermById', req)
|
|
454
|
+
|
|
455
|
+
async function core() {
|
|
456
|
+
//提供對象為node使用者, 且認定權限系統須系統管理員才能使用, 須先檢測token是否為系統管理員, 再由query取得欲查詢的使用者userId, 再由其userId查詢回傳該使用者權限資訊物件
|
|
457
|
+
|
|
458
|
+
//token
|
|
459
|
+
let token = get(req, 'query.token', '')
|
|
460
|
+
// console.log('token', token)
|
|
461
|
+
|
|
462
|
+
//getGenUserByUserId
|
|
463
|
+
let userSelf = await getTokenUserForSelf(token)
|
|
464
|
+
// console.log('userSelf', userSelf)
|
|
465
|
+
|
|
466
|
+
//check
|
|
467
|
+
if (get(userSelf, 'isAdmin') !== 'y') { //權限系統須系統管理員才能使用
|
|
468
|
+
return Promise.reject(`user does not have permission`)
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
//userId
|
|
472
|
+
let userId = get(req, 'query.userId', '')
|
|
473
|
+
// console.log('userId', userId)
|
|
474
|
+
|
|
475
|
+
//getGenUserAndRulesByUserId
|
|
476
|
+
let r = await getGenUserAndRulesByUserId(userId)
|
|
477
|
+
// console.log('getGenUserAndRulesByUserId', r)
|
|
478
|
+
|
|
479
|
+
//check
|
|
480
|
+
if (!iseobj(r)) {
|
|
481
|
+
return Promise.reject(`user does not have permrules`)
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
return r
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
//pm2resolve core
|
|
488
|
+
let r = await pm2resolve(core)() //w-ui-loginout接收已預設格式用pm2resolve轉過, 須另提取state進行判斷
|
|
489
|
+
// console.log('getUserByToken', r)
|
|
490
|
+
|
|
441
491
|
return r
|
|
442
492
|
},
|
|
443
493
|
},
|
|
@@ -148,6 +148,7 @@
|
|
|
148
148
|
|
|
149
149
|
<script>
|
|
150
150
|
import { mdiStackOverflow, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline } from '@mdi/js/mdi.js'
|
|
151
|
+
// import JSON5 from 'json5'
|
|
151
152
|
import get from 'lodash/get'
|
|
152
153
|
import each from 'lodash/each'
|
|
153
154
|
import map from 'lodash/map'
|
|
@@ -211,9 +212,9 @@ export default {
|
|
|
211
212
|
|
|
212
213
|
let vo = this
|
|
213
214
|
|
|
214
|
-
//rs
|
|
215
|
+
//rs
|
|
215
216
|
let rs = map(vo.ruleGroups, (v) => {
|
|
216
|
-
// let rules =
|
|
217
|
+
// let rules = JSON5.parse(v.crules)
|
|
217
218
|
return {
|
|
218
219
|
...v,
|
|
219
220
|
// rules,
|
|
@@ -123,6 +123,7 @@
|
|
|
123
123
|
|
|
124
124
|
<script>
|
|
125
125
|
import { mdiGamepadCircle, mdiStackOverflow, mdiAccountGroupOutline, mdiBallotRecountOutline, mdiCloudUploadOutline } from '@mdi/js/mdi.js'
|
|
126
|
+
import JSON5 from 'json5'
|
|
126
127
|
import get from 'lodash/get'
|
|
127
128
|
import set from 'lodash/set'
|
|
128
129
|
import each from 'lodash/each'
|
|
@@ -141,6 +142,10 @@ import WTree from 'w-component-vue/src/components/WTree.vue'
|
|
|
141
142
|
import { getTreeBlocks } from '../plugins/mShare.mjs'
|
|
142
143
|
|
|
143
144
|
|
|
145
|
+
//dlm
|
|
146
|
+
let dlm = '.'
|
|
147
|
+
|
|
148
|
+
|
|
144
149
|
export default {
|
|
145
150
|
components: {
|
|
146
151
|
WIcon,
|
|
@@ -202,6 +207,8 @@ export default {
|
|
|
202
207
|
|
|
203
208
|
//getTreeBlocks
|
|
204
209
|
let treeBlocks = getTreeBlocks(vo.targets)
|
|
210
|
+
// console.log('targets', vo.targets)
|
|
211
|
+
// console.log('treeBlocks', treeBlocks)
|
|
205
212
|
|
|
206
213
|
//save
|
|
207
214
|
vo.treeBlocks = treeBlocks
|
|
@@ -379,7 +386,7 @@ export default {
|
|
|
379
386
|
let nkParent = dropRight(v.nk, 2)
|
|
380
387
|
let p = get(treeBlocksTemp, nkParent)
|
|
381
388
|
v.parentId = p.id
|
|
382
|
-
v.id = `${v.parentId}
|
|
389
|
+
v.id = `${v.parentId}${dlm}${v.text}` //[tag:dlm]
|
|
383
390
|
}
|
|
384
391
|
v.order = k //需重新給予order
|
|
385
392
|
set(treeBlocksTemp, v.nk, v)
|
|
@@ -448,7 +455,7 @@ export default {
|
|
|
448
455
|
//gs
|
|
449
456
|
let gs = []
|
|
450
457
|
each(vo.ruleGroups, (v) => {
|
|
451
|
-
let rules =
|
|
458
|
+
let rules = JSON5.parse(v.crules)
|
|
452
459
|
let r = replaceObjKeys(rules, kpDiffs)
|
|
453
460
|
if (r.isChanged) {
|
|
454
461
|
gs.push({
|
|
@@ -153,6 +153,7 @@
|
|
|
153
153
|
<script>
|
|
154
154
|
import { mdiAccountEdit, mdiFileTree } from '@mdi/js/mdi.js'
|
|
155
155
|
import Vue from 'vue'
|
|
156
|
+
// import JSON5 from 'json5'
|
|
156
157
|
import get from 'lodash/get'
|
|
157
158
|
import each from 'lodash/each'
|
|
158
159
|
import map from 'lodash/map'
|
|
@@ -227,9 +228,9 @@ export default {
|
|
|
227
228
|
|
|
228
229
|
let vo = this
|
|
229
230
|
|
|
230
|
-
//rs
|
|
231
|
+
//rs
|
|
231
232
|
let rs = map(vo.ruleGroups, (v) => {
|
|
232
|
-
// let rules =
|
|
233
|
+
// let rules = JSON5.parse(v.crules)
|
|
233
234
|
return {
|
|
234
235
|
...v,
|
|
235
236
|
// rules,
|
|
@@ -311,8 +312,8 @@ export default {
|
|
|
311
312
|
//mergedGroup
|
|
312
313
|
let mergedGroup = {
|
|
313
314
|
id: 'merged-group',
|
|
314
|
-
name:
|
|
315
|
-
crules: JSON.stringify(urs),
|
|
315
|
+
name: urs.ruleGroupsNames,
|
|
316
|
+
crules: JSON.stringify(urs.rules),
|
|
316
317
|
}
|
|
317
318
|
|
|
318
319
|
//mergedGroup
|
|
@@ -92,9 +92,10 @@
|
|
|
92
92
|
|
|
93
93
|
<WTree
|
|
94
94
|
:viewHeightMax="treeHeight"
|
|
95
|
-
:
|
|
96
|
-
:
|
|
97
|
-
:
|
|
95
|
+
:indent="0.5"
|
|
96
|
+
:iconToggleColor="'#666'"
|
|
97
|
+
:iconToggleBackgroundColor="'transparent'"
|
|
98
|
+
:iconToggleBackgroundColorHover="'transparent'"
|
|
98
99
|
:data="treeBlocks"
|
|
99
100
|
>
|
|
100
101
|
<template v-slot:item="props">
|
|
@@ -207,6 +208,7 @@
|
|
|
207
208
|
|
|
208
209
|
<script>
|
|
209
210
|
import { mdiEyeCheck, mdiEyeOff, mdiEyedropper, mdiEyedropperOff } from '@mdi/js/mdi.js'
|
|
211
|
+
import JSON5 from 'json5'
|
|
210
212
|
import get from 'lodash/get'
|
|
211
213
|
import set from 'lodash/set'
|
|
212
214
|
import each from 'lodash/each'
|
|
@@ -275,7 +277,7 @@ export default {
|
|
|
275
277
|
let group = cloneDeep(vo.group)
|
|
276
278
|
|
|
277
279
|
//save rules
|
|
278
|
-
let rules =
|
|
280
|
+
let rules = JSON5.parse(group.crules)
|
|
279
281
|
group.rules = rules
|
|
280
282
|
// console.log('rules', rules)
|
|
281
283
|
|
|
@@ -303,30 +305,6 @@ export default {
|
|
|
303
305
|
return get(this, `$store.state.targets`)
|
|
304
306
|
},
|
|
305
307
|
|
|
306
|
-
// blocks: function() {
|
|
307
|
-
// // console.log('computed blocks')
|
|
308
|
-
|
|
309
|
-
// let vo = this
|
|
310
|
-
|
|
311
|
-
// //rs
|
|
312
|
-
// let rs = map(vo.targets, (v) => {
|
|
313
|
-
|
|
314
|
-
// //text, parentId
|
|
315
|
-
// let s = sep(v.id, '.')
|
|
316
|
-
// let text = get(takeRight(s), 0) //取最後節點
|
|
317
|
-
// s = dropRight(s, 1)
|
|
318
|
-
// let parentId = join(s, '.') //取父節點
|
|
319
|
-
|
|
320
|
-
// return {
|
|
321
|
-
// ...v,
|
|
322
|
-
// parentId,
|
|
323
|
-
// text,
|
|
324
|
-
// }
|
|
325
|
-
// })
|
|
326
|
-
|
|
327
|
-
// return rs
|
|
328
|
-
// },
|
|
329
|
-
|
|
330
308
|
treeBlocks: function() {
|
|
331
309
|
// console.log('computed treeBlocks')
|
|
332
310
|
|
package/src/perm.mjs
CHANGED
|
@@ -1,60 +1,108 @@
|
|
|
1
1
|
import axios from 'axios'
|
|
2
|
+
import get from 'lodash/get'
|
|
2
3
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
4
|
+
import isbol from 'wsemi/src/isbol.mjs'
|
|
5
|
+
import isfun from 'wsemi/src/isfun.mjs'
|
|
3
6
|
import genPm from 'wsemi/src/genPm.mjs'
|
|
7
|
+
import pmInvResolve from 'wsemi/src/pmInvResolve.mjs'
|
|
4
8
|
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
function perm() {
|
|
7
11
|
|
|
12
|
+
//pmd
|
|
13
|
+
let pmd = null
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
15
|
+
//conn
|
|
16
|
+
let conn = (url, opt = {}) => {
|
|
12
17
|
|
|
18
|
+
//check
|
|
19
|
+
if (!isestr(url)) {
|
|
20
|
+
throw new Error(`invalid url`)
|
|
21
|
+
}
|
|
22
|
+
if (url.indexOf('token=') === 0) {
|
|
23
|
+
throw new Error(`url does not include 'token='`)
|
|
24
|
+
}
|
|
25
|
+
if (url.indexOf('userId=') === 0) {
|
|
26
|
+
throw new Error(`url does not include 'userId='`)
|
|
27
|
+
}
|
|
13
28
|
|
|
14
|
-
|
|
29
|
+
//thenExtractData
|
|
30
|
+
let thenExtractData = get(opt, 'thenExtractData')
|
|
31
|
+
if (!isbol(thenExtractData)) {
|
|
32
|
+
thenExtractData = false //通過axios取數據時須給予true
|
|
33
|
+
}
|
|
15
34
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
35
|
+
//useAsync
|
|
36
|
+
let useAsync = get(opt, 'useAsync')
|
|
37
|
+
if (!isbol(useAsync)) {
|
|
38
|
+
useAsync = false
|
|
39
|
+
}
|
|
20
40
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// data: rin,
|
|
33
|
-
})
|
|
34
|
-
.then((res) => {
|
|
35
|
-
// console.log(res)
|
|
36
|
-
let r = {
|
|
37
|
-
msg: '成功取得使用者權限',
|
|
38
|
-
res,
|
|
39
|
-
}
|
|
40
|
-
pm.resolve(r)
|
|
41
|
-
})
|
|
42
|
-
.catch((err) => {
|
|
43
|
-
// console.log(err)
|
|
44
|
-
let r = {
|
|
45
|
-
msg: '取得使用者權限發生錯誤',
|
|
46
|
-
res: err,
|
|
47
|
-
}
|
|
48
|
-
pm.reject(r)
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
return pm
|
|
52
|
-
}
|
|
41
|
+
//permSuccess
|
|
42
|
+
let permSuccess = get(opt, 'permSuccess')
|
|
43
|
+
|
|
44
|
+
//permError
|
|
45
|
+
let permError = get(opt, 'permError')
|
|
46
|
+
|
|
47
|
+
//pm
|
|
48
|
+
let pm = null
|
|
49
|
+
if (useAsync) {
|
|
50
|
+
pm = genPm()
|
|
51
|
+
}
|
|
53
52
|
|
|
53
|
+
//get
|
|
54
|
+
let pms = axios.get(url)
|
|
55
|
+
pms = pmInvResolve(pms, { thenExtractData })
|
|
56
|
+
pms
|
|
57
|
+
.then((res) => {
|
|
58
|
+
// console.log('perm.getPerm then', res)
|
|
59
|
+
pmd = res
|
|
60
|
+
if (isfun(permSuccess)) {
|
|
61
|
+
permSuccess(pmd)
|
|
62
|
+
}
|
|
63
|
+
if (useAsync) {
|
|
64
|
+
pm.resolve(kp)
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
.catch((err) => {
|
|
68
|
+
// console.log('perm.getPerm catch', err)
|
|
69
|
+
if (isfun(permError)) {
|
|
70
|
+
permError(err)
|
|
71
|
+
}
|
|
72
|
+
if (useAsync) {
|
|
73
|
+
pm.reject()
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
if (useAsync) {
|
|
78
|
+
return pm
|
|
79
|
+
}
|
|
80
|
+
return kp
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
//kp
|
|
84
|
+
let kp = {
|
|
85
|
+
conn,
|
|
86
|
+
getUser: () => {
|
|
87
|
+
let u = get(pmd, `user`, {})
|
|
88
|
+
// console.log('u', u)
|
|
89
|
+
return u
|
|
90
|
+
},
|
|
91
|
+
getRules: () => {
|
|
92
|
+
return get(pmd, `rules`, {})
|
|
93
|
+
},
|
|
94
|
+
rule: (key) => {
|
|
95
|
+
return get(pmd, `rules.${key}`, {})
|
|
96
|
+
},
|
|
97
|
+
show: (key) => {
|
|
98
|
+
return get(pmd, `rules.${key}.show`, 'n')
|
|
99
|
+
},
|
|
100
|
+
active: (key) => {
|
|
101
|
+
return get(pmd, `rules.${key}.active`, 'n')
|
|
102
|
+
},
|
|
103
|
+
}
|
|
54
104
|
|
|
55
|
-
|
|
56
|
-
iniPerm,
|
|
57
|
-
getPerm,
|
|
105
|
+
return kp
|
|
58
106
|
}
|
|
59
107
|
|
|
60
108
|
|