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, BindPassword: config.LdapBindPassword,
BaseDN: config.LdapBaseDN, BaseDN: config.LdapBaseDN,
Insecure: config.LdapInsecure, Insecure: config.LdapInsecure,
SearchFilter: config.LdapSearchFilter,
} }
// Create LDAP service // Create LDAP service
@@ -249,6 +250,7 @@ func init() {
rootCmd.Flags().String("ldap-bind-password", "", "LDAP bind password.") 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().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().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 // Bind flags to environment
viper.BindEnv("port", "PORT") viper.BindEnv("port", "PORT")
@@ -289,6 +291,7 @@ func init() {
viper.BindEnv("ldap-bind-password", "LDAP_BIND_PASSWORD") viper.BindEnv("ldap-bind-password", "LDAP_BIND_PASSWORD")
viper.BindEnv("ldap-base-dn", "LDAP_BASE_DN") viper.BindEnv("ldap-base-dn", "LDAP_BASE_DN")
viper.BindEnv("ldap-insecure", "LDAP_INSECURE") viper.BindEnv("ldap-insecure", "LDAP_INSECURE")
viper.BindEnv("ldap-search-filter", "LDAP_SEARCH_FILTER")
// Bind flags to viper // Bind flags to viper
viper.BindPFlags(rootCmd.Flags()) viper.BindPFlags(rootCmd.Flags())

View File

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

View File

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