w-web-sso 1.1.7 → 1.1.9
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 +28 -1
- package/dist/index.tmp +1 -1
- package/dist/js/{app-legacy.a88fbf2b.js → app-legacy.f49e2b46.js} +1 -1
- package/dist/js/{app.a88fbf2b.js → app.f49e2b46.js} +1 -1
- package/dist/js/{chunk-vendors-legacy.94d4cf62.js → chunk-vendors-legacy.b0cbd418.js} +2 -2
- package/dist/js/{chunk-vendors.94d4cf62.js → chunk-vendors.b0cbd418.js} +2 -2
- package/dist/w-web-sso.umd.js +5 -5
- package/dist/w-web-sso.umd.js.map +1 -1
- package/docs/WWebSso.html +48 -14
- package/docs/global.html +1143 -28
- package/docs/index.html +2 -2
- package/docs/server_WWebSso.mjs.html +23 -26
- package/docs/server_getIgnoredOrmKeys.mjs.html +106 -0
- package/docs/server_lockSave.mjs.html +2 -2
- package/docs/server_ormWrite.mjs.html +121 -0
- package/docs/server_staLogs_resolveShellWorker.mjs.html +180 -0
- package/docs/server_wrapTimer.mjs.html +130 -0
- package/docs/src_components_Common_CheckYesNo.vue.html +2 -2
- package/docs/src_fetchSsoMsg.mjs.html +2 -2
- package/docs/src_httpGetJson.mjs.html +2 -2
- package/docs/src_maskUrl.mjs.html +2 -2
- package/docs/src_plugins_submitGuard.mjs.html +2 -2
- package/g_mOrm.mjs +2 -7
- package/package.json +13 -13
- package/server/WWebSso.mjs +21 -24
- package/server/getIgnoredOrmKeys.mjs +34 -0
- package/server/ormWrite.mjs +49 -0
- package/server/procCore.mjs +247 -117
- package/server/procLang.mjs +19 -1
- package/server/procProtect.mjs +91 -73
- package/server/staLogs/resolveShellWorker.mjs +108 -0
- package/server/staLogs/staLogsCore.callWorker.mjs +29 -9
- package/server/wrapTimer.mjs +58 -0
- package/settings.json +5 -1
package/README.md
CHANGED
|
@@ -13,6 +13,33 @@ To view documentation or get support, visit [docs](https://yuda-lyu.github.io/w-
|
|
|
13
13
|
|
|
14
14
|
## Upgrade Notes
|
|
15
15
|
|
|
16
|
+
### Upgrading from 1.1.8 and earlier
|
|
17
|
+
|
|
18
|
+
**寫入前驗證(行為變更)**:後台清單儲存(`updateUsersList` / `updateTokensList` / `updateIpsList`,含以具寫入權限之 app token 呼叫者)與自助註冊(`createUser`)改於任何寫入之前驗證下列輸入;拒絕時資料庫無任何變更(同批之刪除不會先落地、不撤銷令牌、不清快取):
|
|
19
|
+
|
|
20
|
+
| 輸入 | 新回應 key | 原本行為 |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| 欄位值(含主鍵;明文密碼除外)含會被 XSS 清除改寫之 HTML 標記(如 `<` 後接英文字母、白名單外之屬性;白名單標籤與不構成標記之 `<` 如 `a < b` 照常) | `htmlMarkupNotAllowed` | 一般欄位存成 `<` 之形式(帳號因此無法以所輸入之值登入、唯一性可被繞過);主鍵則於寫入中段被拒,回 `saveWriteFail` 而同批刪除已落地 |
|
|
23
|
+
| rows 非陣列;主鍵非字串、本批重複,或 UTF-8 超過 1978 位元組(LMDB 鍵長上限) | `invalidRows` | 重複主鍵後列覆蓋前列;超長主鍵於寫入中段失敗(同上部分寫入) |
|
|
24
|
+
| 使用者清單之 email 為空 / 本批重複 | `userEmailEmpty` / `userEmailDuplicate` | 含 email 值之英文字串 |
|
|
25
|
+
|
|
26
|
+
- 既有資料不回溯:已存成 `<` 形式之值維持原樣。
|
|
27
|
+
- 依賴:`w-serv-orm ^1.1.11`、`w-serv-hapi ^1.1.6`、`w-data-collector ^1.0.46`、`w-syslog ^1.0.33`、`w-orm-lmdb ^1.0.39`、`wsemi ^1.9.16`;w-serv-orm 自身之錯誤訊息改為英文(只寫入 srLog,不回前端)。
|
|
28
|
+
|
|
29
|
+
**停用 `useCheckUser` / `getUserById` / `useExcludeWhenNotAdmin`(行為變更)**:此三鍵原透傳給 w-serv-orm 之使用者檢查;w-serv-orm 1.1.9 起已移除此三鍵(1.1.10 起給予 `undefined`、`null`、`false` 以外之值即於建構時拋錯)。本套件不再轉交,寫入皆於各功能內以權杖授權(使用者須為管理者、app token 須具對應寫入權限),自助註冊為公開流程。舊設定若仍給予(如 `useCheckUser: true`),後端照常啟動並於啟動時記警告(console 與 srLog 之 `boot` 事件,只列出給予之鍵);`null`、`false` 視同未給、不警告;請自 settings / optExt 移除。停用前之行為:開啟 `useCheckUser` 時自助註冊必回 `userRegistrationFailed`、金鑰與 IP 清單之儲存必回 `saveWriteFail`(未給 `getUserById` 時使用者清單亦然;有給時以 app token 儲存使用者清單仍然失敗),`useExcludeWhenNotAdmin` 則從未作用。
|
|
30
|
+
|
|
31
|
+
**`serverPort` 未給或無效時監聽 11007(修正)**:原後端把未正規化之 `serverPort` 交給 w-serv-hapi,settings 未給或給非正整數時實際監聽 8080,與文件所載之預設 11007、註冊驗證信連結之回退網址 `http://localhost:11007` 不一致;本版起一律監聽正規化後之值。
|
|
32
|
+
|
|
33
|
+
**背景計時器之錯誤不再中斷後端(修正)**:w-serv-hapi 1.1.6 起不再於行程層攔截未處理之錯誤(本套件亦不註冊,全域錯誤政策由部署方決定)。本版起帳號登入失敗紀錄剪枝、權杖與 IP 之調用次數封鎖、新 IP 偵測等計時器之內部錯誤一律記入 srLog(`event: 'timer-error'`)並於下一輪照常執行,不會使後端行程結束;原新 IP 偵測於讀取 IP 清單失敗後即永久停止偵測。
|
|
34
|
+
|
|
35
|
+
**統計之 log 掃描 worker 改於首次統計時定位(修正)**:原於模組載入時以模組所在位置組出 worker 檔之路徑,經打包(本套件之 `dist`,即 `main` 所指之 `dist/w-web-sso.umd.js`,或被下游專案再打包)後載入即拋 `ReferenceError: Cannot access '…' before initialization`,且打包後之位置下沒有 worker 檔。本版起於第一次統計時依序由本套件根目錄、bundle 所在位置之 `node_modules`、工作目錄之 `node_modules` 定位 `server/staLogs/staLogsCore.shellWorker.mjs` 並快取;找不到時該次統計回 `getStaDataFailed`(srLog 記錄已試之位置),不影響其他功能。安裝時須保留套件之 `server/` 資料夾(預設即保留)。bundle 內之 w-syslog 原亦有同型問題,已隨其 1.0.33 修正,本版之 `dist` 可正常載入。
|
|
36
|
+
|
|
37
|
+
**log(依賴 w-syslog 1.0.33,行為變更)**:`logFd` 之資料夾不可建立(例如上層為檔案)時啟動即拋錯(早於建立資料庫);寫檔失敗與 log 背景執行緒之錯誤不再使後端行程結束(改輸出至 stderr);`logFd` 為連結(junction/symlink)時亦依 `logNumKeep`(未給採 w-syslog 預設)刪除最舊之 log 檔,原本不刪;log 資料夾於執行中被刪除時,切檔時自動重建。
|
|
38
|
+
|
|
39
|
+
**回傳物件**:`WWebSso(...)` 回傳 w-serv-hapi 之伺服器事件物件(可監聽 `error`);w-serv-hapi 1.1.6 起另有 `ready()`、`stop()`,其中 `stop()` 只停止 HTTP 與通訊層,不停止本套件之背景計時器與資料庫連線,呼叫後行程仍持續(完整停止尚未提供)。
|
|
40
|
+
|
|
41
|
+
**金鑰清單經 API 新增之列保留擁有者(修正)**:直打 `updateTokensList` 新增列(鑄造金鑰;後台介面無新增列)時,擁有者(`userId`)原被改寫為空字串而使該金鑰不可用;本版起依送入值寫入。
|
|
42
|
+
|
|
16
43
|
### Upgrading from 1.1.4 and earlier
|
|
17
44
|
|
|
18
45
|
**修正說明**:1.1.4(含)以前,對外查詢 helper 失敗時會把已代入權杖之完整網址放進 reject 值與 console;消費端若把錯誤原樣回應,送出無效權杖即可取得該系統向 SSO 介接用之 app token。本版起 helper 之 reject 值與 console 皆不含權杖(下述),且 app token 改為依權限授權、預設只能查使用者(見下方「應用系統金鑰權限」)。
|
|
@@ -63,7 +90,7 @@ To view documentation or get support, visit [docs](https://yuda-lyu.github.io/w-
|
|
|
63
90
|
|
|
64
91
|
- `allowUserRegistration` 預設 `false`(自助註冊為 opt-in 新功能,明確設 `true` 才啟用;正式機須給 `verifyBaseUrl` 使驗證信連結可自外部連通)。`siteUrl` 為選填(目前保留供未來使用,尚無功能讀取,不強制提供)。
|
|
65
92
|
- `passwordPolicy` 未給採程式內建預設密碼政策(同套件自帶 settings.json 之預設組);有給則以內建預設為底淺層 merge——可只給欲調整之欄位(如 `{ minLength: 10 }`),未給欄位沿用內建(黑名單等隨套件更新),merge 後逐欄驗證(給了就必須給對)。
|
|
66
|
-
- 信件文字鍵**全數繼續生效**(各欄位逐語系物件,語意同舊版):`chpwEmTitle` / `chpwEmContent`(變更密碼通知信,`{sender}`/`{name}` 置換符)、`regVerifyEmTitle` / `regVerifyEmContent`(註冊驗證信,`{sender}`/`{name}`/`{verifyUrl}` 置換符);另新增 `resetPwEmTitle` / `resetPwEmContent`(重設密碼通知信,`{sender}`/`{name}`/`{account}`/`{newPassword}` 置換符)與 `verifyEmailResultContent`(驗證結果頁,`{title}`/`{message}` 置換符);2026-09-15 起結果頁之三則訊息 `userRegistrationVerifySuccess` / `verifyEmailAlreadyVerified` / `verifyEmailInvalidToken` 亦可以同名 settings 鍵逐語系覆寫(代入 `{message}
|
|
93
|
+
- 信件文字鍵**全數繼續生效**(各欄位逐語系物件,語意同舊版):`chpwEmTitle` / `chpwEmContent`(變更密碼通知信,`{sender}`/`{name}` 置換符)、`regVerifyEmTitle` / `regVerifyEmContent`(註冊驗證信,`{sender}`/`{name}`/`{verifyUrl}` 置換符);另新增 `resetPwEmTitle` / `resetPwEmContent`(重設密碼通知信,`{sender}`/`{name}`/`{account}`/`{newPassword}` 置換符)與 `verifyEmailResultContent`(驗證結果頁,`{title}`/`{message}` 置換符);2026-09-15 起結果頁之三則訊息 `userRegistrationVerifySuccess` / `verifyEmailAlreadyVerified` / `verifyEmailInvalidToken` 亦可以同名 settings 鍵逐語系覆寫(代入 `{message}`;部署方須點名自家系統時於此覆寫,不改套件內建);2026-10-11 起另含驗證時寫入資料庫失敗之 `verifyEmailFailed`(連結仍有效,可再點一次)。各值可直接給文字,**亦可給檔案路徑**(絕對或基於啟動路徑之相對,檔案存在即讀檔作為內容,不存在則原樣視為文字)。既有客製不需任何搬移;未給時採內建語系文字(結果頁採內建模板,另可用 `pathTemplate` 指定自訂結果頁模板資料夾)。套件自帶 `settings.json` 已含全部鍵與預設文字可直接參考。
|
|
67
94
|
- settings 內 `salt` 為伺服器端 pepper(範例值 `'{salt}'`,正式部署請自行改為高熵字串;亦可以環境變數 `SALT` 覆寫);套件不檢查其內容。
|
|
68
95
|
|
|
69
96
|
**API (授權收緊, 1.0.5x 起)**: `/api/getSsoUserInfor` 與 `/api/getSsoUsersList` 由「任何有效 token」收緊為須 **admin token 或 app token(`isApp='y'`;1.1.4 之後之版本改為具 `readUsers` 之 app token,此為其基本權限)**。以 app token 做系統介接者不受影響;若既有整合以一般使用者 token 呼叫這兩支,請改用 app token。錯誤訊息字串已改為 i18n key(呼叫端請以 `state==='success'` 判斷成敗,勿比對錯誤字串)。
|
package/dist/index.tmp
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" lang="zh-tw"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,minimal-ui"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta name="referrer" content="strict-origin"><title></title><link _href="https://cdn.jsdelivr.net/npm/@mdi/font@7.4.47/css/materialdesignicons.min.css" rel="stylesheet"><link _href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css" rel="stylesheet"><script>window.___pmwsso___={
|
|
2
2
|
language: '{language}',
|
|
3
|
-
}</script><script defer="defer" src="{sfd}/js/chunk-vendors.
|
|
3
|
+
}</script><script defer="defer" src="{sfd}/js/chunk-vendors.b0cbd418.js" type="module"></script><script defer="defer" src="{sfd}/js/app.f49e2b46.js" type="module"></script><link href="{sfd}/css/chunk-vendors.5c06be05.css" rel="stylesheet"><link href="{sfd}/css/app.f96fdac8.css" rel="stylesheet"><script defer="defer" src="{sfd}/js/chunk-vendors-legacy.b0cbd418.js" nomodule></script><script defer="defer" src="{sfd}/js/app-legacy.f49e2b46.js" nomodule></script></head><body style="font-family:'Microsoft JhengHei','Avenir','Helvetica', 'Arial', 'sans-serif'; padding:0px; margin:0px;"><noscript><strong>We're sorry but w-component-vue doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|