feat: add configurable search filter

This commit is contained in:
Stavros
2025-07-05 15:22:09 +03:00
parent 0e43c50ac0
commit 01042a3003
3 changed files with 6 additions and 1 deletions

View File

@@ -152,6 +152,7 @@ var rootCmd = &cobra.Command{
BindPassword: config.LdapBindPassword,
BaseDN: config.LdapBaseDN,
Insecure: config.LdapInsecure,
SearchFilter: config.LdapSearchFilter,
}
// Create LDAP service
@@ -249,6 +250,7 @@ func init() {
rootCmd.Flags().String("ldap-bind-password", "", "LDAP bind password.")
rootCmd.Flags().String("ldap-base-dn", "", "LDAP base DN (e.g. dc=example,dc=com).")
rootCmd.Flags().Bool("ldap-insecure", false, "Skip certificate verification for the LDAP server.")
rootCmd.Flags().String("ldap-search-filter", "(uid=%s)", "LDAP search filter for user lookup.")
// Bind flags to environment
viper.BindEnv("port", "PORT")
@@ -289,6 +291,7 @@ func init() {
viper.BindEnv("ldap-bind-password", "LDAP_BIND_PASSWORD")
viper.BindEnv("ldap-base-dn", "LDAP_BASE_DN")
viper.BindEnv("ldap-insecure", "LDAP_INSECURE")
viper.BindEnv("ldap-search-filter", "LDAP_SEARCH_FILTER")
// Bind flags to viper
viper.BindPFlags(rootCmd.Flags())

View File

@@ -41,7 +41,7 @@ func (l *LDAP) Search(username string) (string, error) {
searchRequest := ldapgo.NewSearchRequest(
l.BaseDN,
ldapgo.ScopeWholeSubtree, ldapgo.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(uid=%s)", username),
fmt.Sprintf(l.Config.SearchFilter, username),
[]string{"dn"},
nil,
)

View File

@@ -41,6 +41,7 @@ type Config struct {
LdapBindPassword string `mapstructure:"ldap-bind-password"`
LdapBaseDN string `mapstructure:"ldap-base-dn"`
LdapInsecure bool `mapstructure:"ldap-insecure"`
LdapSearchFilter string `mapstructure:"ldap-search-filter"`
}
// Server configuration
@@ -135,4 +136,5 @@ type LdapConfig struct {
BindPassword string
BaseDN string
Insecure bool
SearchFilter string
}