123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package ldapreader
- import (
- "fmt"
- "github.com/go-ldap/ldap"
- )
- type LdapReader struct {
- username string
- password string
- server string
- basedn string
- }
- //NewOauthHandler xxx
- func NewLDAPReader(username string, password string, server string, basedn string) *LdapReader {
- LDAPHandler := LdapReader{
- username: username,
- password: password,
- server: server,
- basedn: basedn,
- }
- return &LDAPHandler
- }
- func (handler *LdapReader) GetUser(username string) ([]*ldap.Entry, error) {
- return handler.retrieveInformation("uid="+username+","+handler.basedn, "(objectClass=*)", ldap.ScopeBaseObject)
- }
- func (handler *LdapReader) GetAllUser() ([]*ldap.Entry, error) {
- return handler.retrieveInformation(handler.basedn, "(objectClass=*)", ldap.ScopeWholeSubtree)
- }
- func (handler *LdapReader) retrieveInformation(dn string, filter string, typeOfSearch int) ([]*ldap.Entry, error) {
- ldapURL, err := ldap.DialURL(fmt.Sprintf("ldap://%s:389", handler.server))
- if err != nil {
- return nil, err
- }
- defer ldapURL.Close()
- ldapURL.Bind(handler.username, handler.password)
- searchReq := ldap.NewSearchRequest(
- dn,
- typeOfSearch,
- ldap.NeverDerefAliases,
- 0,
- 0,
- false,
- filter,
- []string{"uid", "memberOf"},
- nil,
- )
- result, err := ldapURL.Search(searchReq)
- if err != nil {
- return nil, fmt.Errorf("Search Error: %s", err)
- }
- if len(result.Entries) > 0 {
- return result.Entries, nil
- } else {
- return nil, fmt.Errorf("Couldn't fetch search entries")
- }
- }
|