MCPcopy
hub / github.com/tinyauthapp/tinyauth / GetUserDN

Method GetUserDN

internal/service/ldap_service.go:146–173  ·  view source on GitHub ↗
(username string)

Source from the content-addressed store, hash-verified

144}
145
146func (ldap *LdapService) GetUserDN(username string) (string, error) {
147 // Escape the username to prevent LDAP injection
148 escapedUsername := ldapgo.EscapeFilter(username)
149 filter := fmt.Sprintf(ldap.config.SearchFilter, escapedUsername)
150
151 searchRequest := ldapgo.NewSearchRequest(
152 ldap.config.BaseDN,
153 ldapgo.ScopeWholeSubtree, ldapgo.NeverDerefAliases, 0, 0, false,
154 filter,
155 []string{"dn"},
156 nil,
157 )
158
159 ldap.mutex.Lock()
160 defer ldap.mutex.Unlock()
161
162 searchResult, err := ldap.conn.Search(searchRequest)
163 if err != nil {
164 return "", err
165 }
166
167 if len(searchResult.Entries) != 1 {
168 return "", fmt.Errorf("multiple or no entries found for user %s", username)
169 }
170
171 userDN := searchResult.Entries[0].DN
172 return userDN, nil
173}
174
175func (ldap *LdapService) GetUserGroups(userDN string) ([]string, error) {
176 escapedUserDN := ldapgo.EscapeFilter(userDN)

Callers 1

SearchUserMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected