github.com/infraboard/keyauth@v0.8.1/apps/provider/auth/ldap/connection.go (about) 1 package ldap 2 3 import ( 4 "github.com/go-ldap/ldap/v3" 5 ) 6 7 // Connection interface representing a connection to the ldap. 8 type Connection interface { 9 Bind(username, password string) error 10 Close() 11 12 Search(searchRequest *ldap.SearchRequest) (*ldap.SearchResult, error) 13 Modify(modifyRequest *ldap.ModifyRequest) error 14 } 15 16 // ConnectionImpl the production implementation of an ldap connection. 17 type ConnectionImpl struct { 18 conn *ldap.Conn 19 } 20 21 // NewLDAPConnectionImpl create a new ldap connection. 22 func NewLDAPConnectionImpl(conn *ldap.Conn) *ConnectionImpl { 23 return &ConnectionImpl{conn} 24 } 25 26 // Bind binds ldap connection to a username/password. 27 func (lc *ConnectionImpl) Bind(username, password string) error { 28 return lc.conn.Bind(username, password) 29 } 30 31 // Close closes a ldap connection. 32 func (lc *ConnectionImpl) Close() { 33 lc.conn.Close() 34 } 35 36 // Search searches a ldap server. 37 func (lc *ConnectionImpl) Search(searchRequest *ldap.SearchRequest) (*ldap.SearchResult, error) { 38 return lc.conn.Search(searchRequest) 39 } 40 41 // Modify modifies an ldap object. 42 func (lc *ConnectionImpl) Modify(modifyRequest *ldap.ModifyRequest) error { 43 return lc.conn.Modify(modifyRequest) 44 }