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 {
path string
token string
roleID string
secretID string
cli *api.Client
opts config.Options
}
@ -95,43 +98,38 @@ func (c *vaultConfig) Init(opts ...config.Option) error {
}
c.cli = cli
c.path = path
c.token = token
c.roleID = roleID
c.secretID = secretID
if token != "" {
cli.SetToken(token)
if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail {
if err = c.setToken(); err != nil && !c.opts.AllowFail {
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 {
return err
}
return nil
}
func (c *vaultConfig) setToken() error {
if c.token != "" {
c.cli.SetToken(c.token)
}
rsp, err := cli.Logical().Write("auth/approle/login", map[string]interface{}{
"role_id": roleID,
"secret_id": secretID,
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 !c.opts.AllowFail {
return err
}
} 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