refactor(bootstrap): renommer DefaultLoginHandler en BitwardenLoginHandler
Le handler est spécifique au backend Bitwarden CLI. Le nom "Default" suggérait à tort qu'il s'applique à tous les MCPs. Les MCPs sans backend Bitwarden ne définissent pas de hook Login : autoDisabledCommands masque automatiquement la commande. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d23d79b6c1
commit
e6c372bffc
2 changed files with 14 additions and 10 deletions
|
|
@ -10,10 +10,14 @@ import (
|
|||
|
||||
var loginBitwarden = secretstore.LoginBitwarden
|
||||
|
||||
// DefaultLoginHandler retourne un Handler qui authentifie et déverrouille
|
||||
// Bitwarden, persiste la session BW_SESSION, et confirme le résultat.
|
||||
// Utiliser comme hook Login lorsqu'aucune logique personnalisée n'est requise.
|
||||
func DefaultLoginHandler(binaryName string) Handler {
|
||||
// BitwardenLoginHandler retourne un Handler pour la commande login des MCPs
|
||||
// qui utilisent le backend Bitwarden. Il authentifie et déverrouille le vault,
|
||||
// persiste BW_SESSION, et confirme le résultat.
|
||||
//
|
||||
// N'utiliser que si le MCP déclare secret_store.backend_policy = "bitwarden-cli"
|
||||
// dans son manifest. Pour les backends env-only ou keyring, ne pas définir de
|
||||
// hook Login : la commande sera automatiquement masquée.
|
||||
func BitwardenLoginHandler(binaryName string) Handler {
|
||||
name := strings.TrimSpace(binaryName)
|
||||
return func(_ context.Context, inv Invocation) error {
|
||||
if _, err := loginBitwarden(secretstore.BitwardenLoginOptions{
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func withLoginBitwarden(t *testing.T, fn func(secretstore.BitwardenLoginOptions)
|
|||
t.Cleanup(func() { loginBitwarden = previous })
|
||||
}
|
||||
|
||||
func TestDefaultLoginHandlerPrintsConfirmation(t *testing.T) {
|
||||
func TestBitwardenLoginHandlerPrintsConfirmation(t *testing.T) {
|
||||
var stdout bytes.Buffer
|
||||
|
||||
withLoginBitwarden(t, func(opts secretstore.BitwardenLoginOptions) (string, error) {
|
||||
|
|
@ -27,7 +27,7 @@ func TestDefaultLoginHandlerPrintsConfirmation(t *testing.T) {
|
|||
return "session-token", nil
|
||||
})
|
||||
|
||||
handler := DefaultLoginHandler("my-mcp")
|
||||
handler := BitwardenLoginHandler("my-mcp")
|
||||
err := handler(context.Background(), Invocation{
|
||||
Command: CommandLogin,
|
||||
Stdout: &stdout,
|
||||
|
|
@ -45,7 +45,7 @@ func TestDefaultLoginHandlerPrintsConfirmation(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestDefaultLoginHandlerPropagatesError(t *testing.T) {
|
||||
func TestBitwardenLoginHandlerPropagatesError(t *testing.T) {
|
||||
var stdout bytes.Buffer
|
||||
loginErr := errors.New("vault locked")
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ func TestDefaultLoginHandlerPropagatesError(t *testing.T) {
|
|||
return "", loginErr
|
||||
})
|
||||
|
||||
handler := DefaultLoginHandler("my-mcp")
|
||||
handler := BitwardenLoginHandler("my-mcp")
|
||||
err := handler(context.Background(), Invocation{
|
||||
Command: CommandLogin,
|
||||
Stdout: &stdout,
|
||||
|
|
@ -66,7 +66,7 @@ func TestDefaultLoginHandlerPropagatesError(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestRunUsesDefaultLoginHandlerWhenHookSet(t *testing.T) {
|
||||
func TestRunUsesBitwardenLoginHandlerWhenHookSet(t *testing.T) {
|
||||
var stdout bytes.Buffer
|
||||
|
||||
withLoginBitwarden(t, func(_ secretstore.BitwardenLoginOptions) (string, error) {
|
||||
|
|
@ -78,7 +78,7 @@ func TestRunUsesDefaultLoginHandlerWhenHookSet(t *testing.T) {
|
|||
Args: []string{"login"},
|
||||
Stdout: &stdout,
|
||||
Hooks: Hooks{
|
||||
Login: DefaultLoginHandler("my-mcp"),
|
||||
Login: BitwardenLoginHandler("my-mcp"),
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Reference in a new issue