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
|
SecretName string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
ansiRedColor = "\033[31m"
|
||||||
|
ansiResetColor = "\033[0m"
|
||||||
|
)
|
||||||
|
|
||||||
func Run(ctx context.Context, args []string, version string) error {
|
func Run(ctx context.Context, args []string, version string) error {
|
||||||
runtime, err := NewRuntime(version)
|
runtime, err := NewRuntime(version)
|
||||||
if err != nil {
|
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) {
|
func (r Runtime) openSecretStore() (secretstore.Store, error) {
|
||||||
policy := r.activeBackendPolicy()
|
policy := r.activeBackendPolicy()
|
||||||
if policy == secretstore.BackendBitwardenCLI {
|
if policy == secretstore.BackendBitwardenCLI {
|
||||||
if _, err := secretstore.EnsureBitwardenSessionEnv(secretstore.BitwardenSessionOptions{
|
if err := r.ensureBitwardenSession(); err != nil {
|
||||||
ServiceName: r.BinaryName,
|
|
||||||
}); err != nil {
|
|
||||||
return nil, err
|
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 {
|
func (r Runtime) activeBackendPolicy() secretstore.BackendPolicy {
|
||||||
policy := secretstore.BackendPolicy(strings.TrimSpace(r.Manifest.SecretStore.BackendPolicy))
|
policy := secretstore.BackendPolicy(strings.TrimSpace(r.Manifest.SecretStore.BackendPolicy))
|
||||||
if policy == "" {
|
if policy == "" {
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,8 @@ func TestGenerateCreatesRecommendedSkeleton(t *testing.T) {
|
||||||
"config.NewStore[Profile]",
|
"config.NewStore[Profile]",
|
||||||
"secretstore.Open(secretstore.Options",
|
"secretstore.Open(secretstore.Options",
|
||||||
"secretstore.EnsureBitwardenSessionEnv",
|
"secretstore.EnsureBitwardenSessionEnv",
|
||||||
|
"func (r Runtime) ensureBitwardenSession() error {",
|
||||||
|
"\\033[31m",
|
||||||
"secretstore.LoginBitwarden",
|
"secretstore.LoginBitwarden",
|
||||||
"update.Run",
|
"update.Run",
|
||||||
"manifest.LoadDefaultOrEmbedded",
|
"manifest.LoadDefaultOrEmbedded",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue