feat: user reset-apikey supports acc-mgr-token auth

Allows reset-apikey to use --acc-mgr-token or auto-resolve from
secret-mgr in padded-cell mode, enabling API key provisioning
without an existing user Bearer token.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-16 21:08:00 +00:00
parent 6252039fc5
commit 53b5b88fc2
2 changed files with 19 additions and 4 deletions

View File

@@ -345,7 +345,7 @@ func handleUserCommand(subCmd string, args []string) {
if len(filtered) < 1 { if len(filtered) < 1 {
output.Error("usage: hf user reset-apikey <username>") output.Error("usage: hf user reset-apikey <username>")
} }
commands.RunUserResetAPIKey(filtered[0], tokenFlag) commands.RunUserResetAPIKey(filtered[0], tokenFlag, accMgrTokenFlag)
default: default:
output.Errorf("hf user %s is not implemented yet", subCmd) output.Errorf("hf user %s is not implemented yet", subCmd)
} }

View File

@@ -400,13 +400,28 @@ type resetAPIKeyResponse struct {
} }
// RunUserResetAPIKey implements `hf user reset-apikey <username>`. // RunUserResetAPIKey implements `hf user reset-apikey <username>`.
func RunUserResetAPIKey(username, tokenFlag string) { func RunUserResetAPIKey(username, tokenFlag, accMgrTokenFlag string) {
token := ResolveToken(tokenFlag)
cfg, err := config.Load() cfg, err := config.Load()
if err != nil { if err != nil {
output.Errorf("config error: %v", err) output.Errorf("config error: %v", err)
} }
c := client.New(cfg.BaseURL, token)
// Try acc-mgr-token first (allows provisioning without existing user token)
var c *client.Client
if accMgrTokenFlag != "" {
c = client.NewWithAPIKey(cfg.BaseURL, accMgrTokenFlag)
} else if mode.IsPaddedCell() {
if tok, err := passmgr.GetAccountManagerToken(); err == nil && tok != "" {
c = client.NewWithAPIKey(cfg.BaseURL, tok)
} else {
token := ResolveToken(tokenFlag)
c = client.New(cfg.BaseURL, token)
}
} else {
token := ResolveToken(tokenFlag)
c = client.New(cfg.BaseURL, token)
}
data, err := c.Post("/users/"+username+"/reset-apikey", nil) data, err := c.Post("/users/"+username+"/reset-apikey", nil)
if err != nil { if err != nil {
output.Errorf("failed to reset API key: %v", err) output.Errorf("failed to reset API key: %v", err)