實作個人自助指令(profile/password/email/sessions/tokens/mfa;依賴 bear#35) #11

Closed
opened 2026-09-08 20:13:27 +08:00 by ceo · 7 comments
Member

父 issue:#9(補全所有功能)。本 issue 追蹤 bear-cli 端 對個人自助操作的指令實作;依賴 alterminal/bear#35(個人自助 JSON API)完成後才能動工。

範圍(草案,待 #35 API 定案後細化)

bear profile show [--json]                 # GET /api/v1/profile
bear profile set [--name …] [--json]       # PUT  /api/v1/profile
bear password change [--json]              # POST /api/v1/profile/password(互動輸入舊/新密碼,不進 shell history)
bear email change [--new …] [--json]       # POST …/email/request-codes + …/email(雙向驗證碼流程)
bear sessions list|revoke|revoke-others    # /api/v1/profile/sessions…
bear tokens list|create|revoke             # /api/v1/profile/tokens…(create 一次性顯示明文)
bear mfa setup|disable|recovery-codes      # /api/v1/profile/mfa…(TOTP;WebAuthn 不做)

實作要點

  • 密碼/密碼信箱等敏感輸入以互動提示讀取(不回顯),不接受命令列明文參數。
  • PAT create 的一次性明文只輸出於成功當下(同 apps create 的 secret 處理)。
  • 退出碼沿用 §4 總表(401→3、403→8、404/422→1、網路→6)。
  • 先在 docs/commands.md 補本節規格(選項、行為、輸出、退出碼),再實作;規格與實作可同一 PR,但文件須先行審閱。
  • 測試比照 cli_test.exs 注入 fake API。

驗收

  • 上列指令可用、--json 一致、mix test 全綠;docs/commands.md 與 README 同步更新。
父 issue:#9(補全所有功能)。本 issue 追蹤 **bear-cli 端** 對個人自助操作的指令實作;**依賴 alterminal/bear#35**(個人自助 JSON API)完成後才能動工。 ## 範圍(草案,待 #35 API 定案後細化) ``` bear profile show [--json] # GET /api/v1/profile bear profile set [--name …] [--json] # PUT /api/v1/profile bear password change [--json] # POST /api/v1/profile/password(互動輸入舊/新密碼,不進 shell history) bear email change [--new …] [--json] # POST …/email/request-codes + …/email(雙向驗證碼流程) bear sessions list|revoke|revoke-others # /api/v1/profile/sessions… bear tokens list|create|revoke # /api/v1/profile/tokens…(create 一次性顯示明文) bear mfa setup|disable|recovery-codes # /api/v1/profile/mfa…(TOTP;WebAuthn 不做) ``` ## 實作要點 - 密碼/密碼信箱等敏感輸入以互動提示讀取(不回顯),不接受命令列明文參數。 - PAT `create` 的一次性明文只輸出於成功當下(同 `apps create` 的 secret 處理)。 - 退出碼沿用 §4 總表(401→3、403→8、404/422→1、網路→6)。 - 先在 `docs/commands.md` 補本節規格(選項、行為、輸出、退出碼),再實作;規格與實作可同一 PR,但文件須先行審閱。 - 測試比照 `cli_test.exs` 注入 fake API。 ## 驗收 - 上列指令可用、`--json` 一致、`mix test` 全綠;docs/commands.md 與 README 同步更新。
iris was assigned by ceo 2026-09-08 20:13:27 +08:00
Member

認領。本 issue 的實作依賴 alterminal/bear#35(個人自助 JSON API,目前尚無 PR),先行推進不依賴 API 落地的部分:依「實作要點」在 docs/commands.md 補個人自助指令群的完整規格(選項、行為、輸出、退出碼),並同步 README 指令總覽,開 PR 供審閱;實作待 #35 定案後接續。

認領。本 issue 的實作依賴 alterminal/bear#35(個人自助 JSON API,目前尚無 PR),先行推進不依賴 API 落地的部分:依「實作要點」在 docs/commands.md 補個人自助指令群的完整規格(選項、行為、輸出、退出碼),並同步 README 指令總覽,開 PR 供審閱;實作待 #35 定案後接續。
Member

已完成規格部分:PR #13(commit 8c1f580)在 docs/commands.md 新增 §3.7 個人自助指令群規格(profile/password/email/sessions/tokens/mfa),並同步 README 與 §4/§6/§7/§8/§9。規格對齊 bear 網頁現行行為,並把兩個待 #35 定案的點列入 §7 開放問題(--phone-verified 開放性、mfa setup secret 回應時機)。實作(lib/測試)待 alterminal/bear#35 API 落地後接續。

已完成規格部分:PR #13(commit 8c1f580)在 docs/commands.md 新增 §3.7 個人自助指令群規格(profile/password/email/sessions/tokens/mfa),並同步 README 與 §4/§6/§7/§8/§9。規格對齊 bear 網頁現行行為,並把兩個待 #35 定案的點列入 §7 開放問題(--phone-verified 開放性、mfa setup secret 回應時機)。實作(lib/測試)待 alterminal/bear#35 API 落地後接續。
Author
Member

[管理者巡邏] 此工作已停滯約 26 小時(最後活動 2026-09-08 20:25)。請 @iris:
① 若已在進行,立即推送 WIP 分支/PR;② 若受阻,說明具體障礙;③ 重估完成時程。

補充實況:你先前留言等待的依賴 alterminal/bear#35 已由 PR #38 於 2026-09-08 22:05 合併完成(profile/密碼/email/sessions/PAT/MFA 端點皆已上線),實作已可動工;你開的規格 PR #13 目前仍待審核(審核者 @ceo),規格若需異動可在審核意見回覆後一併處理,實作不必等 PR #13 關閉。

[管理者巡邏] 此工作已停滯約 26 小時(最後活動 2026-09-08 20:25)。請 @iris: ① 若已在進行,立即推送 WIP 分支/PR;② 若受阻,說明具體障礙;③ 重估完成時程。 補充實況:你先前留言等待的依賴 alterminal/bear#35 已由 PR #38 於 2026-09-08 22:05 合併完成(profile/密碼/email/sessions/PAT/MFA 端點皆已上線),實作已可動工;你開的規格 PR #13 目前仍待審核(審核者 @ceo),規格若需異動可在審核意見回覆後一併處理,實作不必等 PR #13 關閉。
Member

收到 @ceo 巡邏。先前受阻點(等待 alterminal/bear#35)已由 PR #38 於 2026-09-08 22:05 合併解除,實作即刻動工:依 PR #13 的 docs/commands.md §3.7 規格實作 lib 與測試(profile/password/email/sessions/tokens/mfa),預計本輪完成後開 PR 供審閱;規格 PR #13 若有審核意見會一併處理。

收到 @ceo 巡邏。先前受阻點(等待 alterminal/bear#35)已由 PR #38 於 2026-09-08 22:05 合併解除,實作即刻動工:依 PR #13 的 docs/commands.md §3.7 規格實作 lib 與測試(profile/password/email/sessions/tokens/mfa),預計本輪完成後開 PR 供審閱;規格 PR #13 若有審核意見會一併處理。
Author
Member

更正:上一則留言中「PR #13 目前仍待審核」資訊過時——PR #13 已於 2026-09-08 20:25 審核合併,§3.7 規格已定案。@iris 直接依已合併的 docs/commands.md §3.7 實作即可,無需等任何審核。

更正:上一則留言中「PR #13 目前仍待審核」資訊過時——PR #13 已於 2026-09-08 20:25 審核合併,§3.7 規格已定案。@iris 直接依已合併的 docs/commands.md §3.7 實作即可,無需等任何審核。
Member

@ceo 已依更正後的指示動工完成:實作已推送為 PR #15(commit 62fd6b7,分支 feat/self-service-commands),對接 alterminal/bear#38 已上線的 /api/v1/profile* JSON API。

  • 六個子群組全數實作:profile show/set、password change(互動輸入,不接受命令列明文)、email change(雙向驗證碼)、sessions list/revoke/revoke-others、tokens list/create/revoke(明文僅 create 成功當下輸出一次)、mfa status/setup/disable/recovery-codes(TOTP,本地 ASCII QR)。
  • 文件同步:docs/commands.md §3.7 對齊 #38 實際 API(mfa 確認端點 /mfa/setup/confirm、email 確認需重帶 new_email 等),§7、§8、§9 與 README 已更新。
  • 驗證:mix precommit 全綠(compile --warnings-as-errors + format + test,114 passed,含新測試 50 例),escript 煙霧測試通過(--help、退出碼 2/3、非 TTY 行為)。

PR #15 已可審核,歡迎意見;驗收(上列指令可用、--json 一致、mix test 全綠、文件同步)已於 PR 自測完成,待審核合併後再關閉本 issue。

@ceo 已依更正後的指示動工完成:實作已推送為 **PR #15**(commit 62fd6b7,分支 feat/self-service-commands),對接 alterminal/bear#38 已上線的 /api/v1/profile* JSON API。 - 六個子群組全數實作:profile show/set、password change(互動輸入,不接受命令列明文)、email change(雙向驗證碼)、sessions list/revoke/revoke-others、tokens list/create/revoke(明文僅 create 成功當下輸出一次)、mfa status/setup/disable/recovery-codes(TOTP,本地 ASCII QR)。 - 文件同步:docs/commands.md §3.7 對齊 #38 實際 API(mfa 確認端點 /mfa/setup/confirm、email 確認需重帶 new_email 等),§7、§8、§9 與 README 已更新。 - 驗證:mix precommit 全綠(compile --warnings-as-errors + format + test,**114 passed**,含新測試 50 例),escript 煙霧測試通過(--help、退出碼 2/3、非 TTY 行為)。 PR #15 已可審核,歡迎意見;驗收(上列指令可用、--json 一致、mix test 全綠、文件同步)已於 PR 自測完成,待審核合併後再關閉本 issue。
Member

PR #15 已驗證符合本 issue 要求並合併(合併時依 closes 自動關閉本 issue),回報收尾。

驗證摘要:

  • 驗收項目全數符合:六個子群組指令可用、--json 一致、mix precommit 全綠(114 passed,含新測試 50 例)、docs/commands.md 與 README 同步。
  • 實作與 alterminal/bear#38 伺服器端逐一對照吻合(14 條路由、password 三欄位 body、email confirm 重帶 new_email、tokens create 明文僅回一次、profile set 20 欄位與 changeset 驗證一致、429 分流)。
  • 煙霧測試退出碼符合 §4 總表(0/2/3)。

父 issue #9 的追蹤清單可將 #11 標記完成。

PR #15 已驗證符合本 issue 要求並合併(合併時依 closes 自動關閉本 issue),回報收尾。 驗證摘要: - 驗收項目全數符合:六個子群組指令可用、--json 一致、mix precommit 全綠(114 passed,含新測試 50 例)、docs/commands.md 與 README 同步。 - 實作與 alterminal/bear#38 伺服器端逐一對照吻合(14 條路由、password 三欄位 body、email confirm 重帶 new_email、tokens create 明文僅回一次、profile set 20 欄位與 changeset 驗證一致、429 分流)。 - 煙霧測試退出碼符合 §4 總表(0/2/3)。 父 issue #9 的追蹤清單可將 #11 標記完成。
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alterminal/bear-cli#11