fix: prompt login in red when bitwarden session is missing
This commit is contained in:
parent
017005b0b1
commit
ef22b1aa8a
2 changed files with 39 additions and 3 deletions
|
|
@ -1596,6 +1596,11 @@ type Runtime struct {
|
|||
SecretName string
|
||||
}
|
||||
|
||||
const (
|
||||
ansiRedColor = "\033[31m"
|
||||
ansiResetColor = "\033[0m"
|
||||
)
|
||||
|
||||
func Run(ctx context.Context, args []string, version string) error {
|
||||
runtime, err := NewRuntime(version)
|
||||
if err != nil {
|
||||
|
|
@ -1917,9 +1922,7 @@ func (r Runtime) runUpdate(ctx context.Context, inv bootstrap.Invocation) error
|
|||
func (r Runtime) openSecretStore() (secretstore.Store, error) {
|
||||
policy := r.activeBackendPolicy()
|
||||
if policy == secretstore.BackendBitwardenCLI {
|
||||
if _, err := secretstore.EnsureBitwardenSessionEnv(secretstore.BitwardenSessionOptions{
|
||||
ServiceName: r.BinaryName,
|
||||
}); err != nil {
|
||||
if err := r.ensureBitwardenSession(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
|
@ -1936,6 +1939,37 @@ func (r Runtime) openSecretStore() (secretstore.Store, error) {
|
|||
})
|
||||
}
|
||||
|
||||
func (r Runtime) ensureBitwardenSession() error {
|
||||
if hasBitwardenSessionInEnv() {
|
||||
return nil
|
||||
}
|
||||
|
||||
loaded, err := secretstore.EnsureBitwardenSessionEnv(secretstore.BitwardenSessionOptions{
|
||||
ServiceName: r.BinaryName,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if loaded || hasBitwardenSessionInEnv() {
|
||||
return nil
|
||||
}
|
||||
|
||||
return errors.New(colorizeRed(fmt.Sprintf(
|
||||
"Session Bitwarden introuvable. Lance %s login puis relance la commande.",
|
||||
r.BinaryName,
|
||||
)))
|
||||
}
|
||||
|
||||
func hasBitwardenSessionInEnv() bool {
|
||||
session, ok := os.LookupEnv("BW_SESSION")
|
||||
return ok && strings.TrimSpace(session) != ""
|
||||
}
|
||||
|
||||
func colorizeRed(message string) string {
|
||||
return ansiRedColor + strings.TrimSpace(message) + ansiResetColor
|
||||
}
|
||||
|
||||
func (r Runtime) activeBackendPolicy() secretstore.BackendPolicy {
|
||||
policy := secretstore.BackendPolicy(strings.TrimSpace(r.Manifest.SecretStore.BackendPolicy))
|
||||
if policy == "" {
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ func TestGenerateCreatesRecommendedSkeleton(t *testing.T) {
|
|||
"config.NewStore[Profile]",
|
||||
"secretstore.Open(secretstore.Options",
|
||||
"secretstore.EnsureBitwardenSessionEnv",
|
||||
"func (r Runtime) ensureBitwardenSession() error {",
|
||||
"\\033[31m",
|
||||
"secretstore.LoginBitwarden",
|
||||
"update.Run",
|
||||
"manifest.LoadDefaultOrEmbedded",
|
||||
|
|
|
|||
Loading…
Reference in a new issue