feat (auth/ldap): add support for new fields to CLI (#3685)

Added support for new flags for: max-page-size and deref-aliases
pull/3693/head
Jim 3 years ago committed by GitHub
parent d271025863
commit 8ee4f6ead0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -9,8 +9,10 @@ import (
"errors"
"fmt"
"net/url"
"strings"
"github.com/hashicorp/boundary/api/authmethods"
"github.com/hashicorp/boundary/internal/auth/ldap"
"github.com/hashicorp/boundary/internal/cmd/base"
"github.com/hashicorp/go-secure-stdlib/parseutil"
)
@ -43,6 +45,8 @@ type extraLdapCmdVars struct {
flagBindPassword string
flagUseTokenGroups bool
flagAccountAttributeMaps []string
flagMaxPageSize uint
flagDerefAliases string
}
const (
@ -66,6 +70,8 @@ const (
bindPasswordFlagName = "bind-password"
useTokenGroupsFlagName = "use-token-groups"
accountAttributeMaps = "account-attribute-map"
maxPageSizeFlagName = "max-page-size"
derefAliasesFlagName = "deref-aliases"
)
func extraLdapActionsFlagsMapFuncImpl() map[string][]string {
@ -92,6 +98,8 @@ func extraLdapActionsFlagsMapFuncImpl() map[string][]string {
useTokenGroupsFlagName,
accountAttributeMaps,
stateFlagName,
maxPageSizeFlagName,
derefAliasesFlagName,
},
}
flags["update"] = flags["create"]
@ -223,6 +231,18 @@ func extraLdapFlagsFuncImpl(c *LdapCommand, set *base.FlagSets, _ *base.FlagSet)
Target: &c.flagState,
Usage: "The desired operational state of the auth method.",
})
case maxPageSizeFlagName:
f.UintVar(&base.UintVar{
Name: maxPageSizeFlagName,
Target: &c.flagMaxPageSize,
Usage: "MaximumPageSize specifies a maximum search result size to use when retrieving the authenticated user's groups (optional).",
})
case derefAliasesFlagName:
f.StringVar(&base.StringVar{
Name: derefAliasesFlagName,
Target: &c.flagDerefAliases,
Usage: "Control how aliases are dereferenced when performing the search. Possible values are: never, finding, searching, and always (optional).",
})
}
}
}
@ -369,6 +389,36 @@ func extraLdapFlagHandlingFuncImpl(c *LdapCommand, _ *base.FlagSets, opts *[]aut
*opts = append(*opts, authmethods.WithLdapAuthMethodGroupFilter(c.flagGroupFilter))
}
switch c.flagDerefAliases {
case "":
case "null":
*opts = append(*opts, authmethods.DefaultLdapAuthMethodDereferenceAliases())
default:
// never, finding, searching, and always
var derefAliases ldap.DerefAliasType
switch strings.ToLower(c.flagDerefAliases) {
case "never":
derefAliases = ldap.NeverDerefAliases
case "finding":
derefAliases = ldap.DerefFindingBaseObj
case "searching":
derefAliases = ldap.DerefInSearching
case "always":
derefAliases = ldap.DerefAlways
default:
c.UI.Error(fmt.Sprintf("%q is an invalid deref aliases (valid values are: never, finding, searching or always)", c.flagDerefAliases))
return false
}
*opts = append(*opts, authmethods.WithLdapAuthMethodDereferenceAliases(string(derefAliases)))
}
switch c.flagMaxPageSize {
case 0:
*opts = append(*opts, authmethods.DefaultLdapAuthMethodMaximumPageSize())
default:
*opts = append(*opts, authmethods.WithLdapAuthMethodMaximumPageSize(uint32(c.flagMaxPageSize)))
}
switch {
case len(c.flagCertificates) == 0:
case len(c.flagCertificates) == 1 && c.flagCertificates[0] == "null":

Loading…
Cancel
Save