w-web-sso 1.0.21 → 1.0.22
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/wsso/ips/data.mdb +0 -0
- package/db/wsso/ips/lock.mdb +0 -0
- package/db/wsso/tokens/data.mdb +0 -0
- package/db/wsso/tokens/lock.mdb +0 -0
- package/db/wsso/users/data.mdb +0 -0
- package/db/wsso/users/lock.mdb +0 -0
- package/dist/index.tmp +1 -1
- package/dist/js/app-legacy.a37bdda6.js +2 -0
- package/dist/js/app-legacy.a37bdda6.js.map +1 -0
- package/dist/js/app.a37bdda6.js +2 -0
- package/dist/js/{app-legacy.1ef4eafd.js.map → app.a37bdda6.js.map} +1 -1
- package/dist/js/{chunk-vendors-legacy.c67d66a8.js → chunk-vendors-legacy.db5d54d9.js} +1 -1
- package/dist/js/chunk-vendors-legacy.db5d54d9.js.map +1 -0
- package/dist/js/{chunk-vendors.c67d66a8.js → chunk-vendors.db5d54d9.js} +1 -1
- package/dist/js/chunk-vendors.db5d54d9.js.map +1 -0
- package/dist/w-web-sso.umd.js +1 -1
- package/docs/WWebSso.html +1 -1
- package/docs/WWebSso.mjs.html +4 -4
- package/docs/index.html +1 -1
- package/g.provideUsers.mjs +31 -30
- package/package.json +2 -3
- package/server/WWebSso.mjs +3 -3
- package/server/provideTabs.mjs +71 -0
- package/src/App.vue +0 -1
- package/src/getUserByToken.mjs +89 -0
- package/src/getUsersByToken.mjs +89 -0
- package/dist/js/app-legacy.1ef4eafd.js +0 -2
- package/dist/js/app.1ef4eafd.js +0 -2
- package/dist/js/app.1ef4eafd.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.c67d66a8.js.map +0 -1
- package/dist/js/chunk-vendors.c67d66a8.js.map +0 -1
- package/server/provideUsers.mjs +0 -67
package/dist/w-web-sso.umd.js
CHANGED
package/docs/WWebSso.html
CHANGED
|
@@ -387,7 +387,7 @@
|
|
|
387
387
|
<br class="clear">
|
|
388
388
|
|
|
389
389
|
<footer>
|
|
390
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on
|
|
390
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Wed Jul 23 2025 12:37:39 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
391
391
|
</footer>
|
|
392
392
|
|
|
393
393
|
<script>prettyPrint();</script>
|
package/docs/WWebSso.mjs.html
CHANGED
|
@@ -566,13 +566,13 @@ function WWebSso(WOrm, url, db, pathSettings) {
|
|
|
566
566
|
// return Promise.reject(`invalid ${key} from inp`)
|
|
567
567
|
// }
|
|
568
568
|
|
|
569
|
-
// //
|
|
570
|
-
//
|
|
569
|
+
// //r
|
|
570
|
+
// let r = {
|
|
571
571
|
// from,
|
|
572
572
|
// [key]: vs,
|
|
573
573
|
// }
|
|
574
574
|
|
|
575
|
-
// return
|
|
575
|
+
// return r
|
|
576
576
|
// }
|
|
577
577
|
|
|
578
578
|
|
|
@@ -1177,7 +1177,7 @@ export default WWebSso
|
|
|
1177
1177
|
<br class="clear">
|
|
1178
1178
|
|
|
1179
1179
|
<footer>
|
|
1180
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on
|
|
1180
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Wed Jul 23 2025 12:37:39 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1181
1181
|
</footer>
|
|
1182
1182
|
|
|
1183
1183
|
<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.4</a> on
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Wed Jul 23 2025 12:37:39 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/g.provideUsers.mjs
CHANGED
|
@@ -1,38 +1,39 @@
|
|
|
1
1
|
import map from 'lodash-es/map.js'
|
|
2
2
|
import ds from './src/schema/index.mjs'
|
|
3
|
-
import
|
|
3
|
+
import provideTabs from './server/provideTabs.mjs'
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
async function provide() {
|
|
7
7
|
|
|
8
|
-
let url = `http://localhost:11007/syncAndReplaceUsers?token=sys`
|
|
9
|
-
|
|
10
|
-
let from = `pd`
|
|
11
|
-
|
|
12
|
-
let rs = [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
]
|
|
17
|
-
rs = map(rs, ([key, name], k) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
})
|
|
31
|
-
console.log('rs', rs)
|
|
32
|
-
|
|
33
|
-
let r = await
|
|
34
|
-
console.log('r.msg', r.msg)
|
|
35
|
-
|
|
8
|
+
// let url = `http://localhost:11007/syncAndReplaceUsers?token=sys`
|
|
9
|
+
|
|
10
|
+
// let from = `pd`
|
|
11
|
+
|
|
12
|
+
// let rs = [
|
|
13
|
+
// ['pd-viewer', 'pd-普通瀏覽者'],
|
|
14
|
+
// ['pd-basic', 'pd-一般使用者'],
|
|
15
|
+
// ['pd-admin', 'pd-系統管理者'],
|
|
16
|
+
// ]
|
|
17
|
+
// rs = map(rs, ([key, name], k) => {
|
|
18
|
+
// let v = ds.users.funNew({
|
|
19
|
+
// order: 1000 + k,
|
|
20
|
+
// name,
|
|
21
|
+
// email: `${key}@example.com`,
|
|
22
|
+
// userId: 'id-for-admin',
|
|
23
|
+
// from,
|
|
24
|
+
// })
|
|
25
|
+
// v.id = `id-for-${key}`
|
|
26
|
+
// if (key === 'pd-admin') {
|
|
27
|
+
// v.isAdmin = 'y'
|
|
28
|
+
// }
|
|
29
|
+
// return v
|
|
30
|
+
// })
|
|
31
|
+
// console.log('rs', rs)
|
|
32
|
+
|
|
33
|
+
// let r = await provideTabs(url, from, rs)
|
|
34
|
+
// console.log('r.msg', r.msg)
|
|
35
|
+
|
|
36
|
+
return Promise.reject(`incompleted`)
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
provide()
|
|
@@ -41,4 +42,4 @@ provide()
|
|
|
41
42
|
})
|
|
42
43
|
|
|
43
44
|
|
|
44
|
-
//node g.
|
|
45
|
+
//node g.provideTabs.mjs
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-web-sso",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"main": "dist/w-web-sso.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@mdi/js": "^7.4.47",
|
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
"w-serv-hapi": "^1.0.60",
|
|
13
13
|
"w-serv-orm": "^1.0.29",
|
|
14
14
|
"w-syslog": "^1.0.6",
|
|
15
|
-
"
|
|
16
|
-
"wsemi": "^1.8.15"
|
|
15
|
+
"wsemi": "^1.8.16"
|
|
17
16
|
},
|
|
18
17
|
"devDependencies": {
|
|
19
18
|
"@vue/cli-plugin-babel": "^5.0.8",
|
package/server/WWebSso.mjs
CHANGED
|
@@ -519,13 +519,13 @@ function WWebSso(WOrm, url, db, pathSettings) {
|
|
|
519
519
|
// return Promise.reject(`invalid ${key} from inp`)
|
|
520
520
|
// }
|
|
521
521
|
|
|
522
|
-
// //
|
|
523
|
-
//
|
|
522
|
+
// //r
|
|
523
|
+
// let r = {
|
|
524
524
|
// from,
|
|
525
525
|
// [key]: vs,
|
|
526
526
|
// }
|
|
527
527
|
|
|
528
|
-
// return
|
|
528
|
+
// return r
|
|
529
529
|
// }
|
|
530
530
|
|
|
531
531
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import axios from 'axios'
|
|
2
|
+
import ltdtpick from 'wsemi/src/ltdtpick.mjs'
|
|
3
|
+
import genPm from 'wsemi/src/genPm.mjs'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
async function provideTabs(url, keyTable, group, rows) {
|
|
7
|
+
//url: 伺服器提供的接入網址, 例如 http://localhost:11007/syncAndReplaceTabs?token={token}&keyTable={keyTable}
|
|
8
|
+
//keyTable: 資料表名
|
|
9
|
+
//from: 指陣列數據來源
|
|
10
|
+
//rows: 陣列數據
|
|
11
|
+
|
|
12
|
+
//pm
|
|
13
|
+
let pm = genPm()
|
|
14
|
+
|
|
15
|
+
// //ks
|
|
16
|
+
// let ks = [
|
|
17
|
+
// 'id',
|
|
18
|
+
// 'order',
|
|
19
|
+
// 'name',
|
|
20
|
+
// 'email',
|
|
21
|
+
// 'description',
|
|
22
|
+
// 'from',
|
|
23
|
+
// 'isAdmin',
|
|
24
|
+
// 'userId',
|
|
25
|
+
// 'timeCreate',
|
|
26
|
+
// 'userIdUpdate',
|
|
27
|
+
// 'timeUpdate',
|
|
28
|
+
// 'isActive',
|
|
29
|
+
// ]
|
|
30
|
+
|
|
31
|
+
// //ltdtpick
|
|
32
|
+
// users = ltdtpick(users, ks)
|
|
33
|
+
|
|
34
|
+
// //rin
|
|
35
|
+
// let rin = {
|
|
36
|
+
// from,
|
|
37
|
+
// users,
|
|
38
|
+
// }
|
|
39
|
+
// // rin = JSON.stringify(rin)
|
|
40
|
+
|
|
41
|
+
// //axios
|
|
42
|
+
// await axios({
|
|
43
|
+
// method: 'post',
|
|
44
|
+
// url,
|
|
45
|
+
// headers: { 'Content-Type': 'application/json; charset=utf-8' },
|
|
46
|
+
// data: rin,
|
|
47
|
+
// })
|
|
48
|
+
// .then((res) => {
|
|
49
|
+
// // console.log(res)
|
|
50
|
+
// let r = {
|
|
51
|
+
// msg: '成功傳輸Users清單',
|
|
52
|
+
// res,
|
|
53
|
+
// }
|
|
54
|
+
// pm.resolve(r)
|
|
55
|
+
// })
|
|
56
|
+
// .catch((err) => {
|
|
57
|
+
// // console.log(err)
|
|
58
|
+
// let r = {
|
|
59
|
+
// msg: '無法傳輸Users清單',
|
|
60
|
+
// res: err,
|
|
61
|
+
// }
|
|
62
|
+
// pm.reject(r)
|
|
63
|
+
// })
|
|
64
|
+
|
|
65
|
+
pm.reject(`incompleted`)
|
|
66
|
+
|
|
67
|
+
return pm
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
export default provideTabs
|
package/src/App.vue
CHANGED
|
@@ -35,7 +35,6 @@ import isestr from 'wsemi/src/isestr.mjs'
|
|
|
35
35
|
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
36
36
|
import isDev from 'wsemi/src/isDev.mjs'
|
|
37
37
|
import waitFun from 'wsemi/src/waitFun.mjs'
|
|
38
|
-
import wui from 'w-ui-loginout/src/WUiLoginout.mjs'
|
|
39
38
|
import LoadingWinBar from './components/Common/LoadingWinBar.vue'
|
|
40
39
|
import CheckYesNo from './components/Common/CheckYesNo.vue'
|
|
41
40
|
import CheckYes from './components/Common/CheckYes.vue'
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import axios from 'axios'
|
|
2
|
+
import get from 'lodash-es/get.js'
|
|
3
|
+
import isestr from 'wsemi/src/isestr.mjs'
|
|
4
|
+
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
5
|
+
import isfun from 'wsemi/src/isfun.mjs'
|
|
6
|
+
import ispm from 'wsemi/src/ispm.mjs'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
async function getUserByToken(url, tokenSelf, tokenTar, opt = {}) {
|
|
10
|
+
//url: http://localhost:11007/api/getSsoUserInfor
|
|
11
|
+
let errTemp = null
|
|
12
|
+
|
|
13
|
+
//check
|
|
14
|
+
if (!isestr(url)) {
|
|
15
|
+
throw new Error('invalid url')
|
|
16
|
+
}
|
|
17
|
+
if (!isestr(tokenSelf)) {
|
|
18
|
+
throw new Error('invalid tokenSelf')
|
|
19
|
+
}
|
|
20
|
+
if (!isestr(tokenTar)) {
|
|
21
|
+
throw new Error('invalid tokenTar')
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//funConvertUser
|
|
25
|
+
let funConvertUser = get(opt, 'funConvertUser')
|
|
26
|
+
|
|
27
|
+
//url
|
|
28
|
+
url = `${url}?token={sysToken}&key=token&value={token}`
|
|
29
|
+
url = url.replaceAll('{sysToken}', tokenSelf) //系統介接用ssoToken
|
|
30
|
+
url = url.replaceAll('{token}', tokenTar)
|
|
31
|
+
// console.log('getUserByToken: url', url)
|
|
32
|
+
|
|
33
|
+
//get
|
|
34
|
+
let res = await axios.get(url)
|
|
35
|
+
.catch((err) => {
|
|
36
|
+
errTemp = err.toString()
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
//check
|
|
40
|
+
if (errTemp !== null) {
|
|
41
|
+
console.log('res', res)
|
|
42
|
+
console.log('errTemp', errTemp)
|
|
43
|
+
console.log(`can not get user by url[${url}]`)
|
|
44
|
+
return Promise.reject(`can not get user by url[${url}]`) //由SSO取得使用者資訊錯誤
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//data
|
|
48
|
+
let data = get(res, 'data')
|
|
49
|
+
|
|
50
|
+
//state
|
|
51
|
+
let state = get(data, 'state', '')
|
|
52
|
+
|
|
53
|
+
//msg
|
|
54
|
+
let msg = get(data, 'msg')
|
|
55
|
+
|
|
56
|
+
//check
|
|
57
|
+
if (state !== 'success') {
|
|
58
|
+
console.log('res', res)
|
|
59
|
+
console.log('data', data)
|
|
60
|
+
console.log('state', state)
|
|
61
|
+
console.log('errTemp', msg)
|
|
62
|
+
console.log(`can not get user data by url[${url}]`)
|
|
63
|
+
return Promise.reject(`can not get user data by url[${url}]`) //取得使用者資訊失敗
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
//u
|
|
67
|
+
let u = msg
|
|
68
|
+
// console.log('getUserByToken u(msg)', u)
|
|
69
|
+
|
|
70
|
+
//check
|
|
71
|
+
if (!iseobj(u)) {
|
|
72
|
+
console.log(`no user data by url[${url}]`)
|
|
73
|
+
return Promise.reject(`no user data by url[${url}]`)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//funConvertUser
|
|
77
|
+
if (isfun(funConvertUser)) {
|
|
78
|
+
u = funConvertUser(u)
|
|
79
|
+
if (ispm(u)) {
|
|
80
|
+
u = await u
|
|
81
|
+
}
|
|
82
|
+
// console.log('getUserByToken u(funConvertUser)', u)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return u
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
export default getUserByToken
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import axios from 'axios'
|
|
2
|
+
import get from 'lodash-es/get.js'
|
|
3
|
+
import size from 'lodash-es/size.js'
|
|
4
|
+
import isestr from 'wsemi/src/isestr.mjs'
|
|
5
|
+
import isfun from 'wsemi/src/isfun.mjs'
|
|
6
|
+
import ispm from 'wsemi/src/ispm.mjs'
|
|
7
|
+
import pmSeries from 'wsemi/src/pmSeries.mjs'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
async function getUsersByToken(url, tokenSelf, opt = {}) {
|
|
11
|
+
//url: http://localhost:11007/api/getSsoUsersList
|
|
12
|
+
let errTemp = null
|
|
13
|
+
|
|
14
|
+
//check
|
|
15
|
+
if (!isestr(url)) {
|
|
16
|
+
throw new Error('invalid url')
|
|
17
|
+
}
|
|
18
|
+
if (!isestr(tokenSelf)) {
|
|
19
|
+
throw new Error('invalid tokenSelf')
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//funConvertUser
|
|
23
|
+
let funConvertUser = get(opt, 'funConvertUser')
|
|
24
|
+
|
|
25
|
+
//url
|
|
26
|
+
url = `${url}?token={sysToken}`
|
|
27
|
+
url = url.replaceAll('{sysToken}', tokenSelf) //系統介接用ssoToken
|
|
28
|
+
// console.log('getUsersByToken: url', url)
|
|
29
|
+
|
|
30
|
+
//get
|
|
31
|
+
let res = await axios.get(url)
|
|
32
|
+
.catch((err) => {
|
|
33
|
+
errTemp = err.toString()
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
//check
|
|
37
|
+
if (errTemp !== null) {
|
|
38
|
+
console.log('res', res)
|
|
39
|
+
console.log('errTemp', errTemp)
|
|
40
|
+
console.log(`can not get users by url[${url}]`)
|
|
41
|
+
return Promise.reject(`can not get users by url[${url}]`) //由SSO取得使用者清單資訊錯誤
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//data
|
|
45
|
+
let data = get(res, 'data')
|
|
46
|
+
|
|
47
|
+
//state
|
|
48
|
+
let state = get(data, 'state', '')
|
|
49
|
+
|
|
50
|
+
//msg
|
|
51
|
+
let msg = get(data, 'msg')
|
|
52
|
+
|
|
53
|
+
//check
|
|
54
|
+
if (state !== 'success') {
|
|
55
|
+
console.log('res', res)
|
|
56
|
+
console.log('data', data)
|
|
57
|
+
console.log('state', state)
|
|
58
|
+
console.log('errTemp', msg)
|
|
59
|
+
console.log(`can not get users data by url[${url}]`)
|
|
60
|
+
return Promise.reject(`can not get users data by url[${url}]`) //取得使用者清單資訊失敗
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
//us
|
|
64
|
+
let us = msg
|
|
65
|
+
// console.log('getUsersByToken us(msg)', us)
|
|
66
|
+
|
|
67
|
+
//check
|
|
68
|
+
if (size(us) === 0) {
|
|
69
|
+
console.log(`no users data by url[${url}]`)
|
|
70
|
+
return Promise.reject(`no users data by url[${url}]`)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//funConvertUser
|
|
74
|
+
if (isfun(funConvertUser)) {
|
|
75
|
+
us = await pmSeries(us, async(u) => {
|
|
76
|
+
u = funConvertUser(u)
|
|
77
|
+
if (ispm(u)) {
|
|
78
|
+
u = await u
|
|
79
|
+
}
|
|
80
|
+
return u
|
|
81
|
+
})
|
|
82
|
+
// console.log('getUsersByToken us(funConvertUser)', us)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return us
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
export default getUsersByToken
|