fix(auth): 錯誤訊息不再叫用戶做做不到的事(arcrun-rag#99,leo 傳實測畫面點破)
leo 傳了封測者實際看到的畫面:撞牆訊息叫他「重新執行安裝/更新讓它就緒」, 但安裝/更新從來不會把 CF_SECRETS_API_TOKEN 種成一個常駐的值——這句話在 訊息會出現的所有情況下都不保證成立(尤其是安裝精靈本身之外的路徑,如事後 新增使用者、改密碼)。使用者照做 → 回到同一畫面 → 以為是自己操作錯誤 → 無限迴圈。這比「訊息不夠白話」嚴重一個級數:不是難懂,是死路。 改:不再承諾一個我們自己都不確定會生效的動作,改成誠實描述現況+給得出去 的下一步(回報支援並附上下情境)。訊息集中在 writeAuthStore 單一出處, console-auth.ts/portal.ts 的 502 回應共用同一份文字,不會各說各話。 測試:全套 vitest 443/457(14 個既存失敗與本檔無關,已用 git stash 對照 clean checkout 確認);tsc --noEmit 無新增錯誤。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -210,9 +210,16 @@ export function newAuthUserId(): string {
|
||||
*/
|
||||
export async function writeAuthStore(env: Bindings, data: AuthStoreData, tokenOverride?: string): Promise<void> {
|
||||
if (!authStoreWritable(env, tokenOverride)) {
|
||||
// arcrun-rag#99(2026-08-14,leo 傳實測畫面點破):舊文案叫用戶「重新執行安裝/更新」,
|
||||
// 但在這個訊息會出現的所有情況下(包含安裝精靈本身,若它沒能把 install token 帶到)那句話
|
||||
// 都不保證成立——安裝/更新從來不會把 CF_SECRETS_API_TOKEN 種成一個常駐的值。
|
||||
// 對一個做不到的動作下指令=把人導向死路(他會以為自己操作錯誤,反覆重試)。
|
||||
// 改成誠實描述現況+給得出去的下一步(回報支援),不再承諾一個我們自己都不確定會生效的動作。
|
||||
throw new AuthStoreWriteError(
|
||||
'這台實例還不能寫入認證儲存(缺 CF_SECRETS_API_TOKEN / CF_ACCOUNT_ID)。' +
|
||||
'認證分離需要這兩項才寫得進 Workers Secrets——請重新執行安裝/更新讓它就緒。',
|
||||
'這台實例目前寫不進認證儲存(缺可用的 Cloudflare 寫入憑證:CF_SECRETS_API_TOKEN / CF_ACCOUNT_ID)。' +
|
||||
'這是平台端的已知限制,不是你操作錯誤——目前沒有你自己在畫面上能做的下一步,' +
|
||||
'請把這則訊息完整截圖/複製給支援,並註明你剛才在做什麼(例如:安裝精靈裡建立第一個帳號、' +
|
||||
'事後新增使用者、或修改密碼),會需要人工協助排除。',
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user