mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
06ceafd905
This simplifies the interface to just expose the methods from the underlying connection that we need. The addition of gen.go makes creating the generated mocks easy go generate.
60 lines
1.7 KiB
Go
60 lines
1.7 KiB
Go
package authentication
|
|
|
|
import (
|
|
"crypto/tls"
|
|
|
|
"github.com/go-ldap/ldap/v3"
|
|
)
|
|
|
|
// LDAPConnection interface representing a connection to the ldap.
|
|
type LDAPConnection interface {
|
|
Bind(username, password string) error
|
|
Close()
|
|
|
|
Search(searchRequest *ldap.SearchRequest) (*ldap.SearchResult, error)
|
|
Modify(modifyRequest *ldap.ModifyRequest) error
|
|
PasswordModify(pwdModifyRequest *ldap.PasswordModifyRequest) (*ldap.PasswordModifyResult, error)
|
|
StartTLS(config *tls.Config) error
|
|
}
|
|
|
|
// LDAPConnectionImpl the production implementation of an ldap connection.
|
|
type LDAPConnectionImpl struct {
|
|
conn *ldap.Conn
|
|
}
|
|
|
|
// NewLDAPConnectionImpl create a new ldap connection.
|
|
func NewLDAPConnectionImpl(conn *ldap.Conn) *LDAPConnectionImpl {
|
|
return &LDAPConnectionImpl{conn}
|
|
}
|
|
|
|
// Bind binds ldap connection to a username/password.
|
|
func (lc *LDAPConnectionImpl) Bind(username, password string) error {
|
|
return lc.conn.Bind(username, password)
|
|
}
|
|
|
|
// Close closes a ldap connection.
|
|
func (lc *LDAPConnectionImpl) Close() {
|
|
lc.conn.Close()
|
|
}
|
|
|
|
// Search searches a ldap server.
|
|
func (lc *LDAPConnectionImpl) Search(searchRequest *ldap.SearchRequest) (*ldap.SearchResult, error) {
|
|
return lc.conn.Search(searchRequest)
|
|
}
|
|
|
|
// Modify modifies an ldap object.
|
|
func (lc *LDAPConnectionImpl) Modify(modifyRequest *ldap.ModifyRequest) error {
|
|
return lc.conn.Modify(modifyRequest)
|
|
}
|
|
|
|
// PasswordModify modifies an ldap objects password.
|
|
func (lc *LDAPConnectionImpl) PasswordModify(pwdModifyRequest *ldap.PasswordModifyRequest) error {
|
|
_, err := lc.conn.PasswordModify(pwdModifyRequest)
|
|
return err
|
|
}
|
|
|
|
// StartTLS requests the LDAP server upgrades to TLS encryption.
|
|
func (lc *LDAPConnectionImpl) StartTLS(config *tls.Config) error {
|
|
return lc.conn.StartTLS(config)
|
|
}
|