fix init with empty options #115

Merged
vtolstov merged 1 commits from initfix into v3 2023-06-03 23:20:06 +03:00

View File

@ -17,6 +17,9 @@ var DefaultStructTag = "vault"
type vaultConfig struct { type vaultConfig struct {
path string path string
token string
roleID string
secretID string
cli *api.Client cli *api.Client
opts config.Options opts config.Options
} }
@ -95,21 +98,14 @@ func (c *vaultConfig) Init(opts ...config.Option) error {
} }
c.cli = cli c.cli = cli
c.path = path c.path = path
c.token = token
c.roleID = roleID
c.secretID = secretID
if token != "" { if err = c.setToken(); err != nil && !c.opts.AllowFail {
cli.SetToken(token)
if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail {
return err return err
} }
return nil
} else if roleID == "" || secretID == "" {
if !c.opts.AllowFail {
return fmt.Errorf("missing Token or RoleID and SecretID")
}
if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail { if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail {
return err return err
} }
@ -117,21 +113,23 @@ func (c *vaultConfig) Init(opts ...config.Option) error {
return nil return nil
} }
rsp, err := cli.Logical().Write("auth/approle/login", map[string]interface{}{ func (c *vaultConfig) setToken() error {
"role_id": roleID, if c.token != "" {
"secret_id": secretID, c.cli.SetToken(c.token)
}
if c.roleID != "" && c.secretID != "" {
rsp, err := c.cli.Logical().Write("auth/approle/login", map[string]interface{}{
"role_id": c.roleID,
"secret_id": c.secretID,
}) })
if err != nil { if err != nil {
if !c.opts.AllowFail { if !c.opts.AllowFail {
return err return err
} }
} else if err == nil { } else if err == nil {
cli.SetToken(rsp.Auth.ClientToken) c.cli.SetToken(rsp.Auth.ClientToken)
} }
if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail {
return err
} }
return nil return nil