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  }