feat: 實作管理端指令群 jwks/accounts/audit-logs(issue #12)
- docs/commands.md 新增 §3.8 jwks、§3.9 accounts、§3.10 audit-logs 規格 - Api 新增 jwks/accounts/audit-logs 端點(共用 api_request) - 新增 Jwks/Accounts/AuditLogs/Admin 模組;CLI 接線三個指令群 - 403 → 退出碼 8 提示需 admin;一次性密碼只在成功當下輸出 - 測試 100 例全綠(fake API 注入,比照 cli_test.exs)
This commit is contained in:
+25
-1
@@ -8,7 +8,7 @@ defmodule BearCli.CLI do
|
||||
優先使用該值,不讀寫本機憑證檔。
|
||||
"""
|
||||
|
||||
alias BearCli.{Api, Apps, Config, Credentials}
|
||||
alias BearCli.{Accounts, Admin, Api, Apps, AuditLogs, Config, Credentials, Jwks}
|
||||
|
||||
@global_switches [
|
||||
issuer: :string,
|
||||
@@ -177,6 +177,14 @@ defmodule BearCli.CLI do
|
||||
end
|
||||
end
|
||||
|
||||
# 管理端指令群(jwks/accounts/audit-logs;解析委由 BearCli.Admin)
|
||||
defp parse_command(group, args, global) when group in ~w(jwks accounts audit-logs) do
|
||||
case Admin.parse([group | args], global) do
|
||||
:error -> {:error, "未知指令:#{group}(可用 bear --help 查看說明)", 2}
|
||||
parsed -> parsed
|
||||
end
|
||||
end
|
||||
|
||||
defp parse_command(unknown, _args, _global) do
|
||||
{:error, "未知指令:#{unknown}(可用 bear --help 查看說明)", 2}
|
||||
end
|
||||
@@ -345,6 +353,19 @@ defmodule BearCli.CLI do
|
||||
apps_api = cmd_opts[:apps_api] || opts[:apps_api] || Api
|
||||
Apps.run(verb, Map.put(cmd_opts, :apps_api, apps_api))
|
||||
|
||||
# 管理端指令群(jwks/accounts/audit-logs;各自注入對應的 api 模組)
|
||||
{:ok, {Jwks, verb}, cmd_opts} when is_atom(verb) ->
|
||||
jwks_api = cmd_opts[:jwks_api] || opts[:jwks_api] || Api
|
||||
Jwks.run(verb, Map.put(cmd_opts, :jwks_api, jwks_api))
|
||||
|
||||
{:ok, {Accounts, verb}, cmd_opts} when is_atom(verb) ->
|
||||
accounts_api = cmd_opts[:accounts_api] || opts[:accounts_api] || Api
|
||||
Accounts.run(verb, Map.put(cmd_opts, :accounts_api, accounts_api))
|
||||
|
||||
{:ok, {AuditLogs, verb}, cmd_opts} when is_atom(verb) ->
|
||||
audit_logs_api = cmd_opts[:audit_logs_api] || opts[:audit_logs_api] || Api
|
||||
AuditLogs.run(verb, Map.put(cmd_opts, :audit_logs_api, audit_logs_api))
|
||||
|
||||
{:ok, command, cmd_opts} ->
|
||||
cond do
|
||||
cmd_opts[:version] ->
|
||||
@@ -653,6 +674,9 @@ defmodule BearCli.CLI do
|
||||
logout 登出(清除本機憑證)
|
||||
status 顯示登入狀態
|
||||
apps <動詞> App 管理(admin;bear apps --help 查看)
|
||||
jwks <動詞> 簽章金鑰管理(admin)
|
||||
accounts <動詞> 帳號管理(admin)
|
||||
audit-logs list 稽核日誌(admin)
|
||||
|
||||
apps 指令群(需 admin 權限的 PAT):
|
||||
apps list [--visibility public|internal] [--status active|inactive]
|
||||
|
||||
Reference in New Issue
Block a user