31 lines
845 B
Go
31 lines
845 B
Go
|
|
package bootstrap
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
"forge.lclr.dev/AI/mcp-framework/secretstore"
|
||
|
|
)
|
||
|
|
|
||
|
|
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 {
|
||
|
|
name := strings.TrimSpace(binaryName)
|
||
|
|
return func(_ context.Context, inv Invocation) error {
|
||
|
|
if _, err := loginBitwarden(secretstore.BitwardenLoginOptions{
|
||
|
|
ServiceName: name,
|
||
|
|
Stdin: inv.Stdin,
|
||
|
|
Stdout: inv.Stdout,
|
||
|
|
Stderr: inv.Stderr,
|
||
|
|
}); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
_, err := fmt.Fprintf(inv.Stdout, "Session Bitwarden persistée pour %q.\n", name)
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
}
|