w-web-sso 1.1.12 → 1.1.13
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 +16 -0
- package/dist/css/{app.b17b0ba0.css → app.f000459f.css} +1 -1
- package/dist/index.tmp +1 -1
- package/dist/js/{app-legacy.bee6840f.js → app-legacy.7c006893.js} +1 -1
- package/dist/js/{app.bee6840f.js → app.7c006893.js} +1 -1
- package/dist/js/{chunk-vendors.0492b6f5.js → chunk-vendors-legacy.97013ddc.js} +5 -5
- package/dist/js/{chunk-vendors-legacy.0492b6f5.js → chunk-vendors.97013ddc.js} +5 -5
- package/dist/w-web-sso.umd.js +4 -4
- package/dist/w-web-sso.umd.js.map +1 -1
- package/docs/WWebSso.html +1 -1
- package/docs/global.html +1 -1
- package/docs/index.html +1 -1
- package/docs/server_WWebSso.mjs.html +16 -10
- package/docs/server_getIgnoredOrmKeys.mjs.html +1 -1
- package/docs/server_lockSave.mjs.html +1 -1
- package/docs/server_ormWrite.mjs.html +1 -1
- package/docs/server_staLogs_resolveShellWorker.mjs.html +1 -1
- package/docs/server_wrapTimer.mjs.html +1 -1
- package/docs/src_components_Common_CheckYesNo.vue.html +1 -1
- package/docs/src_fetchSsoMsg.mjs.html +1 -1
- package/docs/src_httpGetJson.mjs.html +1 -1
- package/docs/src_maskUrl.mjs.html +1 -1
- package/docs/src_plugins_staUsage.mjs.html +1 -1
- package/docs/src_plugins_submitGuard.mjs.html +1 -1
- package/package.json +2 -2
- package/server/WWebSso.mjs +15 -9
- package/server/procCore.mjs +791 -379
- package/server/procLang.mjs +18 -0
- package/server/procProtect.mjs +150 -88
- package/src/baselineOf.mjs +76 -0
- package/src/components/LayoutContentIps.vue +24 -2
- package/src/components/LayoutContentTokens.vue +24 -2
- package/src/components/LayoutContentUsers.vue +9 -3
- package/src/schema/tables/ips.mjs +4 -0
- package/src/schema/tables/tokens.mjs +4 -0
- package/src/writeContracts/index.mjs +9 -0
- package/src/writeContracts/ips.mjs +9 -0
- package/src/writeContracts/tokens.mjs +12 -0
- package/src/writeContracts/tokensSession.mjs +10 -0
- package/src/writeContracts/users.mjs +15 -0
package/docs/WWebSso.html
CHANGED
|
@@ -2492,7 +2492,7 @@ token發放/驗證/更新, 後台使用者/金鑰/IP管理與統計資訊, 以
|
|
|
2492
2492
|
<br class="clear">
|
|
2493
2493
|
|
|
2494
2494
|
<footer>
|
|
2495
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
2495
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
2496
2496
|
</footer>
|
|
2497
2497
|
|
|
2498
2498
|
<script>prettyPrint();</script>
|
package/docs/global.html
CHANGED
|
@@ -3312,7 +3312,7 @@ why: 計時器之 async 回呼 reject 時無人接手, Node 預設即結束行
|
|
|
3312
3312
|
<br class="clear">
|
|
3313
3313
|
|
|
3314
3314
|
<footer>
|
|
3315
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
3315
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
3316
3316
|
</footer>
|
|
3317
3317
|
|
|
3318
3318
|
<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.5</a> on
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
75
75
|
</footer>
|
|
76
76
|
|
|
77
77
|
<script>prettyPrint();</script>
|
|
@@ -510,7 +510,7 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
510
510
|
console.log('WServOrm init failed', err)
|
|
511
511
|
throw err
|
|
512
512
|
}
|
|
513
|
-
let { woItems, procOrm } = wp
|
|
513
|
+
let { woItems, procOrm, withTabLocks, guardWrite } = wp //withTabLocks / guardWrite: 每表一鍵之表鎖(多人同時編輯之寫入契約, 原則 10), procCore 與 procProtect 共用同一組
|
|
514
514
|
|
|
515
515
|
//getWebInfor
|
|
516
516
|
let getWebInfor = () => {
|
|
@@ -587,8 +587,10 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
587
587
|
verifyEmailResultContent = fs.readFileSync(fpTpl, 'utf8')
|
|
588
588
|
}
|
|
589
589
|
|
|
590
|
-
let p = procCore(woItems, procOrm, { srLog, srEmail, salt, minExpired, kpLang, passwordPolicy, allowUserRegistration, siteUrl, verifyBaseUrl })
|
|
590
|
+
let p = procCore(woItems, procOrm, { srLog, srEmail, salt, minExpired, kpLang, passwordPolicy, allowUserRegistration, siteUrl, verifyBaseUrl, withTabLocks, guardWrite })
|
|
591
591
|
let pp = procProtect(woItems, p, {
|
|
592
|
+
procOrm, //系統直寫(自動封鎖、計時器登錄 IP)經 procOrm 且在表鎖內, 更新者記 'system'
|
|
593
|
+
withTabLocks,
|
|
592
594
|
srLog, //app token 跳過速率封鎖時記 debug (ADR-052)
|
|
593
595
|
minForAccountLoginFailed,
|
|
594
596
|
numForAccountLoginFailed,
|
|
@@ -962,7 +964,7 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
962
964
|
// console.log('us', us)
|
|
963
965
|
|
|
964
966
|
//對外介接契約不輸出憑證欄(ADR-068): 介接端常以本清單同步使用者, 憑證會擴散至其資料庫與 log;
|
|
965
|
-
|
|
967
|
+
//只在對外路由剝除(後台 kpfun getUsersList 同樣不回傳 tokenVerify, T3; 存檔時伺服器專有欄位取庫內值, 不再依賴前端整列存回)
|
|
966
968
|
us = us.map(p.omitUserCredential)
|
|
967
969
|
|
|
968
970
|
return us
|
|
@@ -1308,13 +1310,15 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
1308
1310
|
return rs
|
|
1309
1311
|
},
|
|
1310
1312
|
|
|
1311
|
-
|
|
1313
|
+
//optSave: 選用之第 4 參數 { baseline }(前端以 buildBaseline 對載入時畫面所見之列自算, 多人同時編輯之寫入契約 R-CONC-05); 未給即不帶基準(app 權杖直呼、已開啟之舊版頁面, 本 major 允許),
|
|
1314
|
+
//格式 / 白名單由 procCore.parseSaveOpt 驗證, 不識者 reject saveBaselineFormat, 不降級為不帶基準; 此處只轉交, 不展開給 procOrm
|
|
1315
|
+
updateUsersList: async (_t, token, lang, rows, optSave) => {
|
|
1312
1316
|
if (!_strictStr(token)) return Promise.reject('tokenExpired')
|
|
1313
1317
|
if (!isearr(rows) || !rows.every((r) => isestr(get(r, 'id', '')))) return Promise.reject('invalidRows')
|
|
1314
1318
|
srLog.info({ event: 'kpfun-updateUsersList', token: maskToken(token), lang })
|
|
1315
1319
|
//console.log('call updateUsersList...')
|
|
1316
1320
|
//內層 reject key 字串 (含 checkToken 之 tokenExpired) 直接透出回前端 (前端 $t 顯示)
|
|
1317
|
-
let rs = await p.checkTokenAndUpdateUsersList(token, lang, rows, { fun: funCheckAdmin, perm: 'writeUsers' })
|
|
1321
|
+
let rs = await p.checkTokenAndUpdateUsersList(token, lang, rows, { fun: funCheckAdmin, perm: 'writeUsers' }, optSave)
|
|
1318
1322
|
//console.log('call updateUsersList end')
|
|
1319
1323
|
return rs
|
|
1320
1324
|
},
|
|
@@ -1328,12 +1332,13 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
1328
1332
|
return rs
|
|
1329
1333
|
},
|
|
1330
1334
|
|
|
1331
|
-
|
|
1335
|
+
//optSave: { baseline, baselineSession }(app 列嚴格整表基準、session 列逐列寬鬆基準; 見 users 同名參數說明)
|
|
1336
|
+
updateTokensList: async (_t, token, lang, rows, optSave) => {
|
|
1332
1337
|
if (!_strictStr(token)) return Promise.reject('tokenExpired')
|
|
1333
1338
|
if (!isearr(rows) || !rows.every((r) => isestr(get(r, 'id', '')))) return Promise.reject('invalidRows')
|
|
1334
1339
|
srLog.info({ event: 'kpfun-updateTokensList', token: maskToken(token), lang })
|
|
1335
1340
|
//console.log('call updateTokensList...')
|
|
1336
|
-
let rs = await p.checkTokenAndUpdateTokensList(token, rows, { fun: funCheckAdmin, perm: 'writeTokens' })
|
|
1341
|
+
let rs = await p.checkTokenAndUpdateTokensList(token, rows, { fun: funCheckAdmin, perm: 'writeTokens' }, optSave)
|
|
1337
1342
|
//console.log('call updateTokensList end')
|
|
1338
1343
|
return rs
|
|
1339
1344
|
},
|
|
@@ -1347,12 +1352,13 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
1347
1352
|
return rs
|
|
1348
1353
|
},
|
|
1349
1354
|
|
|
1350
|
-
|
|
1355
|
+
//optSave: { baseline }(見 users 同名參數說明)
|
|
1356
|
+
updateIpsList: async (_t, token, lang, rows, optSave) => {
|
|
1351
1357
|
if (!_strictStr(token)) return Promise.reject('tokenExpired')
|
|
1352
1358
|
if (!isearr(rows) || !rows.every((r) => isestr(get(r, 'id', '')))) return Promise.reject('invalidRows')
|
|
1353
1359
|
srLog.info({ event: 'kpfun-updateIpsList', token: maskToken(token), lang })
|
|
1354
1360
|
//console.log('call updateIpsList...')
|
|
1355
|
-
let rs = await p.checkTokenAndUpdateIpsList(token, rows, { fun: funCheckAdmin, perm: 'writeIps' })
|
|
1361
|
+
let rs = await p.checkTokenAndUpdateIpsList(token, rows, { fun: funCheckAdmin, perm: 'writeIps' }, optSave)
|
|
1356
1362
|
//console.log('call updateIpsList end')
|
|
1357
1363
|
return rs
|
|
1358
1364
|
},
|
|
@@ -1451,7 +1457,7 @@ export default WWebSso
|
|
|
1451
1457
|
<br class="clear">
|
|
1452
1458
|
|
|
1453
1459
|
<footer>
|
|
1454
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
1460
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1455
1461
|
</footer>
|
|
1456
1462
|
|
|
1457
1463
|
<script>prettyPrint();</script>
|
|
@@ -93,7 +93,7 @@ export default getIgnoredOrmKeys
|
|
|
93
93
|
<br class="clear">
|
|
94
94
|
|
|
95
95
|
<footer>
|
|
96
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
96
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
97
97
|
</footer>
|
|
98
98
|
|
|
99
99
|
<script>prettyPrint();</script>
|
|
@@ -102,7 +102,7 @@ export default createLockSave
|
|
|
102
102
|
<br class="clear">
|
|
103
103
|
|
|
104
104
|
<footer>
|
|
105
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
105
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
106
106
|
</footer>
|
|
107
107
|
|
|
108
108
|
<script>prettyPrint();</script>
|
|
@@ -108,7 +108,7 @@ export default ormWrite
|
|
|
108
108
|
<br class="clear">
|
|
109
109
|
|
|
110
110
|
<footer>
|
|
111
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
111
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
112
112
|
</footer>
|
|
113
113
|
|
|
114
114
|
<script>prettyPrint();</script>
|
|
@@ -167,7 +167,7 @@ export default resolveShellWorker
|
|
|
167
167
|
<br class="clear">
|
|
168
168
|
|
|
169
169
|
<footer>
|
|
170
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
170
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
171
171
|
</footer>
|
|
172
172
|
|
|
173
173
|
<script>prettyPrint();</script>
|
|
@@ -117,7 +117,7 @@ export default wrapTimer
|
|
|
117
117
|
<br class="clear">
|
|
118
118
|
|
|
119
119
|
<footer>
|
|
120
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
120
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
121
121
|
</footer>
|
|
122
122
|
|
|
123
123
|
<script>prettyPrint();</script>
|
|
@@ -188,7 +188,7 @@ export default {
|
|
|
188
188
|
<br class="clear">
|
|
189
189
|
|
|
190
190
|
<footer>
|
|
191
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
191
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
192
192
|
</footer>
|
|
193
193
|
|
|
194
194
|
<script>prettyPrint();</script>
|
|
@@ -211,7 +211,7 @@ export { fetchSsoMsg, convertUser, hasUrlParam }
|
|
|
211
211
|
<br class="clear">
|
|
212
212
|
|
|
213
213
|
<footer>
|
|
214
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
214
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
215
215
|
</footer>
|
|
216
216
|
|
|
217
217
|
<script>prettyPrint();</script>
|
|
@@ -100,7 +100,7 @@ export default httpGetJson
|
|
|
100
100
|
<br class="clear">
|
|
101
101
|
|
|
102
102
|
<footer>
|
|
103
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
103
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
104
104
|
</footer>
|
|
105
105
|
|
|
106
106
|
<script>prettyPrint();</script>
|
|
@@ -99,7 +99,7 @@ export default maskUrl
|
|
|
99
99
|
<br class="clear">
|
|
100
100
|
|
|
101
101
|
<footer>
|
|
102
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
102
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
103
103
|
</footer>
|
|
104
104
|
|
|
105
105
|
<script>prettyPrint();</script>
|
|
@@ -237,7 +237,7 @@ export { getFreqVal, sumFreqVal, groupFreq, calcUsageSummary }
|
|
|
237
237
|
<br class="clear">
|
|
238
238
|
|
|
239
239
|
<footer>
|
|
240
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
240
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
241
241
|
</footer>
|
|
242
242
|
|
|
243
243
|
<script>prettyPrint();</script>
|
|
@@ -150,7 +150,7 @@ export default submitGuard
|
|
|
150
150
|
<br class="clear">
|
|
151
151
|
|
|
152
152
|
<footer>
|
|
153
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on
|
|
153
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Fri Oct 23 2026 11:30:30 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
154
154
|
</footer>
|
|
155
155
|
|
|
156
156
|
<script>prettyPrint();</script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-web-sso",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.13",
|
|
4
4
|
"main": "dist/w-web-sso.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"json5": "^2.2.3",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"w-echarts-vue": "^1.0.19",
|
|
11
11
|
"w-email": "^1.1.8",
|
|
12
12
|
"w-serv-hapi": "^1.1.7",
|
|
13
|
-
"w-serv-orm": "^1.1.
|
|
13
|
+
"w-serv-orm": "^1.1.17",
|
|
14
14
|
"w-syslog": "^1.0.34",
|
|
15
15
|
"wsemi": "^1.9.21"
|
|
16
16
|
},
|
package/server/WWebSso.mjs
CHANGED
|
@@ -463,7 +463,7 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
463
463
|
console.log('WServOrm init failed', err)
|
|
464
464
|
throw err
|
|
465
465
|
}
|
|
466
|
-
let { woItems, procOrm } = wp
|
|
466
|
+
let { woItems, procOrm, withTabLocks, guardWrite } = wp //withTabLocks / guardWrite: 每表一鍵之表鎖(多人同時編輯之寫入契約, 原則 10), procCore 與 procProtect 共用同一組
|
|
467
467
|
|
|
468
468
|
//getWebInfor
|
|
469
469
|
let getWebInfor = () => {
|
|
@@ -540,8 +540,10 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
540
540
|
verifyEmailResultContent = fs.readFileSync(fpTpl, 'utf8')
|
|
541
541
|
}
|
|
542
542
|
|
|
543
|
-
let p = procCore(woItems, procOrm, { srLog, srEmail, salt, minExpired, kpLang, passwordPolicy, allowUserRegistration, siteUrl, verifyBaseUrl })
|
|
543
|
+
let p = procCore(woItems, procOrm, { srLog, srEmail, salt, minExpired, kpLang, passwordPolicy, allowUserRegistration, siteUrl, verifyBaseUrl, withTabLocks, guardWrite })
|
|
544
544
|
let pp = procProtect(woItems, p, {
|
|
545
|
+
procOrm, //系統直寫(自動封鎖、計時器登錄 IP)經 procOrm 且在表鎖內, 更新者記 'system'
|
|
546
|
+
withTabLocks,
|
|
545
547
|
srLog, //app token 跳過速率封鎖時記 debug (ADR-052)
|
|
546
548
|
minForAccountLoginFailed,
|
|
547
549
|
numForAccountLoginFailed,
|
|
@@ -915,7 +917,7 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
915
917
|
// console.log('us', us)
|
|
916
918
|
|
|
917
919
|
//對外介接契約不輸出憑證欄(ADR-068): 介接端常以本清單同步使用者, 憑證會擴散至其資料庫與 log;
|
|
918
|
-
|
|
920
|
+
//只在對外路由剝除(後台 kpfun getUsersList 同樣不回傳 tokenVerify, T3; 存檔時伺服器專有欄位取庫內值, 不再依賴前端整列存回)
|
|
919
921
|
us = us.map(p.omitUserCredential)
|
|
920
922
|
|
|
921
923
|
return us
|
|
@@ -1261,13 +1263,15 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
1261
1263
|
return rs
|
|
1262
1264
|
},
|
|
1263
1265
|
|
|
1264
|
-
|
|
1266
|
+
//optSave: 選用之第 4 參數 { baseline }(前端以 buildBaseline 對載入時畫面所見之列自算, 多人同時編輯之寫入契約 R-CONC-05); 未給即不帶基準(app 權杖直呼、已開啟之舊版頁面, 本 major 允許),
|
|
1267
|
+
//格式 / 白名單由 procCore.parseSaveOpt 驗證, 不識者 reject saveBaselineFormat, 不降級為不帶基準; 此處只轉交, 不展開給 procOrm
|
|
1268
|
+
updateUsersList: async (_t, token, lang, rows, optSave) => {
|
|
1265
1269
|
if (!_strictStr(token)) return Promise.reject('tokenExpired')
|
|
1266
1270
|
if (!isearr(rows) || !rows.every((r) => isestr(get(r, 'id', '')))) return Promise.reject('invalidRows')
|
|
1267
1271
|
srLog.info({ event: 'kpfun-updateUsersList', token: maskToken(token), lang })
|
|
1268
1272
|
//console.log('call updateUsersList...')
|
|
1269
1273
|
//內層 reject key 字串 (含 checkToken 之 tokenExpired) 直接透出回前端 (前端 $t 顯示)
|
|
1270
|
-
let rs = await p.checkTokenAndUpdateUsersList(token, lang, rows, { fun: funCheckAdmin, perm: 'writeUsers' })
|
|
1274
|
+
let rs = await p.checkTokenAndUpdateUsersList(token, lang, rows, { fun: funCheckAdmin, perm: 'writeUsers' }, optSave)
|
|
1271
1275
|
//console.log('call updateUsersList end')
|
|
1272
1276
|
return rs
|
|
1273
1277
|
},
|
|
@@ -1281,12 +1285,13 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
1281
1285
|
return rs
|
|
1282
1286
|
},
|
|
1283
1287
|
|
|
1284
|
-
|
|
1288
|
+
//optSave: { baseline, baselineSession }(app 列嚴格整表基準、session 列逐列寬鬆基準; 見 users 同名參數說明)
|
|
1289
|
+
updateTokensList: async (_t, token, lang, rows, optSave) => {
|
|
1285
1290
|
if (!_strictStr(token)) return Promise.reject('tokenExpired')
|
|
1286
1291
|
if (!isearr(rows) || !rows.every((r) => isestr(get(r, 'id', '')))) return Promise.reject('invalidRows')
|
|
1287
1292
|
srLog.info({ event: 'kpfun-updateTokensList', token: maskToken(token), lang })
|
|
1288
1293
|
//console.log('call updateTokensList...')
|
|
1289
|
-
let rs = await p.checkTokenAndUpdateTokensList(token, rows, { fun: funCheckAdmin, perm: 'writeTokens' })
|
|
1294
|
+
let rs = await p.checkTokenAndUpdateTokensList(token, rows, { fun: funCheckAdmin, perm: 'writeTokens' }, optSave)
|
|
1290
1295
|
//console.log('call updateTokensList end')
|
|
1291
1296
|
return rs
|
|
1292
1297
|
},
|
|
@@ -1300,12 +1305,13 @@ function WWebSso(WOrm, url, db, pathSettings, optExt = {}) {
|
|
|
1300
1305
|
return rs
|
|
1301
1306
|
},
|
|
1302
1307
|
|
|
1303
|
-
|
|
1308
|
+
//optSave: { baseline }(見 users 同名參數說明)
|
|
1309
|
+
updateIpsList: async (_t, token, lang, rows, optSave) => {
|
|
1304
1310
|
if (!_strictStr(token)) return Promise.reject('tokenExpired')
|
|
1305
1311
|
if (!isearr(rows) || !rows.every((r) => isestr(get(r, 'id', '')))) return Promise.reject('invalidRows')
|
|
1306
1312
|
srLog.info({ event: 'kpfun-updateIpsList', token: maskToken(token), lang })
|
|
1307
1313
|
//console.log('call updateIpsList...')
|
|
1308
|
-
let rs = await p.checkTokenAndUpdateIpsList(token, rows, { fun: funCheckAdmin, perm: 'writeIps' })
|
|
1314
|
+
let rs = await p.checkTokenAndUpdateIpsList(token, rows, { fun: funCheckAdmin, perm: 'writeIps' }, optSave)
|
|
1309
1315
|
//console.log('call updateIpsList end')
|
|
1310
1316
|
return rs
|
|
1311
1317
|
},
|