feat: 實作 bear CLI PAT 模式 MVP(login/whoami/token/logout/status)
- 新增 Elixir + Mix escript 專案(Req 0.5+、Jason) - login --token <PAT>:以 PAT 驗證 /userinfo 後寫入憑證檔(0600) - whoami:GET /userinfo 顯示身分 claims(支援 --json) - token:印出 access token 供 pipe(--refresh 在 PAT 模式忽略) - logout:清除本機憑證;status:純本機判定 - 憑證檔採原子寫入(rename)、0600、O_CREAT|O_EXCL 防 symlink - 全域選項:--issuer/--config/--json/-v/-h/--version - 29 個單元測試;mix precommit(compile --warnings-as-errors + format + test) - 更新 README.md 與 docs/commands.md 反映 PAT 模式 MVP Device Flow 登入待伺服器端 P1(bear 倉庫)完成後再接。issue #2
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
**Bear CLI** 是 [澳特科技](https://alterminal.com)(Alter Technology)單點登入系統 [Bear](https://gitea.alterminal.com/alterminal/bear) 的**終端機(CLI)客戶端**:讓使用者在 Linux 終端機直接以 Bear 帳號登入、查詢身分、取得並續期 Token,作為 SSO 的終端入口。
|
||||
|
||||
> **狀態:規劃階段**。本倉庫目前只規劃指令介面(command spec),**尚未實作任何程式碼**。
|
||||
> **狀態:已實作 PAT 模式 MVP(Elixir + Req)**。`login --token <PAT>`、`whoami`、`token`、`logout`、`status` 已可用;Device Authorization Grant(RFC 8628)登入待伺服器端 P1(bear 倉庫)完成後再接。
|
||||
> 伺服器端採用的 OIDC **Device Authorization Grant(RFC 8628)** 方向,詳見 bear 倉庫的設計文件 `docs/cli-feature-plan.md`(issue #17)。
|
||||
|
||||
---
|
||||
@@ -28,6 +28,33 @@ Bear 目前所有流程都依賴「瀏覽器」:登入 `/login`、儀表板 La
|
||||
|
||||
---
|
||||
|
||||
## 實作狀態(MVP)
|
||||
|
||||
目前已實作**個人存取權杖(PAT)模式**的最小可用版本,涵蓋 P2 指令:
|
||||
|
||||
| 指令 | 狀態 |
|
||||
|------|------|
|
||||
| `bear login --token <PAT>` | ✅ 已實作(PAT 模式;Device Flow 待伺服器端 P1) |
|
||||
| `bear whoami` | ✅ 已實作(`GET /userinfo`,Bearer PAT) |
|
||||
| `bear token` | ✅ 已實作(印出 PAT;`--refresh` 在 PAT 模式下無作用) |
|
||||
| `bear logout` | ✅ 已實作(清除本機憑證;PAT 需至網頁撤銷) |
|
||||
| `bear status` | ✅ 已實作(純本機判定) |
|
||||
| `bear apps` | ⏳ P3 暫緩 |
|
||||
|
||||
### 建置與執行
|
||||
|
||||
```bash
|
||||
mix deps.get # 安裝依賴(Req、Jason)
|
||||
mix test # 跑單元測試
|
||||
mix escript.build # 產生單檔可執行 `bear`
|
||||
./bear --help
|
||||
./bear login --token <PAT> --issuer https://alterminal.com
|
||||
```
|
||||
|
||||
> 發行格式目前採 `mix escript`(目標機需 Erlang);self-contained release(bakeware/burrito)仍為待定方向(見 `docs/commands.md` §7)。
|
||||
|
||||
---
|
||||
|
||||
## 全域選項
|
||||
|
||||
| 選項 | 說明 | 預設 |
|
||||
@@ -41,7 +68,18 @@ Bear 目前所有流程都依賴「瀏覽器」:登入 `/login`、儀表板 La
|
||||
|
||||
---
|
||||
|
||||
## 登入流程(`bear login`,示意)
|
||||
## 登入流程(`bear login`)
|
||||
|
||||
### PAT 模式(現行)
|
||||
|
||||
```bash
|
||||
$ bear login --token <PAT>
|
||||
已登入:alice@example.com
|
||||
```
|
||||
|
||||
以個人存取權杖(PAT)直接驗證 `GET /userinfo`,成功後將 token 寫入本機憑證檔(0600)。全程免瀏覽器。
|
||||
|
||||
### Device Flow(待伺服器端 P1,示意)
|
||||
|
||||
```
|
||||
$ bear login
|
||||
|
||||
Reference in New Issue
Block a user