refactor(config): remove claude_credentials, add default credential path

This commit is contained in:
Alexander
2026-04-10 14:14:38 +02:00
parent 17cde479c3
commit 945a865bbe
+27 -13
View File
@@ -13,7 +13,6 @@ import (
type Config struct { type Config struct {
Port int `yaml:"port"` Port int `yaml:"port"`
APIKeys []string `yaml:"api_keys"` APIKeys []string `yaml:"api_keys"`
ClaudeCredentials string `yaml:"claude_credentials"`
ClaudeBinary string `yaml:"claude_binary"` ClaudeBinary string `yaml:"claude_binary"`
Sanitize SanitizeConfig `yaml:"sanitize"` Sanitize SanitizeConfig `yaml:"sanitize"`
} }
@@ -54,25 +53,38 @@ func Load(path string) (*Config, error) {
return nil, fmt.Errorf("parse config: %w", err) return nil, fmt.Errorf("parse config: %w", err)
} }
// Check for deprecated claude_credentials field
var rawCfg map[string]interface{}
if err := yaml.Unmarshal(data, &rawCfg); err == nil {
if _, exists := rawCfg["claude_credentials"]; exists {
if val, ok := rawCfg["claude_credentials"].(string); ok && val != "" {
return nil, fmt.Errorf("claude_credentials is no longer supported, remove it from config.yaml — the proxy now manages credentials at ~/.claude/.credentials.json")
}
}
}
return cfg, nil return cfg, nil
} }
func LoadCredentials(cfg *Config) ([]*auth.Credential, error) { func DefaultCredentialPath() string {
if cfg.ClaudeCredentials == "" { home, err := os.UserHomeDir()
return nil, fmt.Errorf("claude_credentials not set")
}
cred, err := loadCredentials(cfg.ClaudeCredentials)
if err != nil { if err != nil {
return nil, err return ""
} }
return home + "/.claude/.credentials.json"
return []*auth.Credential{cred}, nil
} }
func loadCredentials(path string) (*auth.Credential, error) { func LoadDefaultCredentials() ([]*auth.Credential, error) {
path := DefaultCredentialPath()
if path == "" {
return nil, nil
}
data, err := os.ReadFile(path) data, err := os.ReadFile(path)
if err != nil { if err != nil {
if os.IsNotExist(err) {
return nil, nil
}
return nil, err return nil, err
} }
@@ -86,12 +98,14 @@ func loadCredentials(path string) (*auth.Credential, error) {
return nil, fmt.Errorf("no access token in %s", path) return nil, fmt.Errorf("no access token in %s", path)
} }
return &auth.Credential{ cred := &auth.Credential{
ID: "claude-native", ID: "claude-native",
Email: oauth.SubscriptionType, Email: oauth.SubscriptionType,
AccessToken: oauth.AccessToken, AccessToken: oauth.AccessToken,
RefreshToken: oauth.RefreshToken, RefreshToken: oauth.RefreshToken,
ExpiresAt: time.UnixMilli(oauth.ExpiresAt), ExpiresAt: time.UnixMilli(oauth.ExpiresAt),
FilePath: path, FilePath: path,
}, nil }
return []*auth.Credential{cred}, nil
} }