MCPcopy Index your code
hub / github.com/TruthHun/BookStack / ValidLDAPLogin

Function ValidLDAPLogin

utils/ldap.go:23–69  ·  view source on GitHub ↗

* 对应的config ldap: host: hostname.yourdomain.com //ldap服务器地址 port: 3268 //ldap服务器端口 attribute: mail //用户名对应ldap object属性 base: DC=yourdomain,DC=com //搜寻范围 user: CN=ldap helper,OU=yourdomain.com,DC=yourdomain,DC=com //第一次绑定用户 password: p@sswd //第一次绑定密码 ssl: false //使用使用ssl */

(password string)

Source from the content-addressed store, hash-verified

21*/
22
23func ValidLDAPLogin(password string) (result bool, err error) {
24
25 lc, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", "192.168.3.104", 389))
26 if err != nil {
27 beego.Error("Dial => ", err)
28 return
29 }
30 defer lc.Close()
31
32 err = lc.Bind("cn=admin,dc=minho,dc=com", "123456")
33 if err != nil {
34 beego.Error("Bind => ", err)
35 return
36 }
37
38 searchRequest := ldap.NewSearchRequest(
39 "DC=minho,DC=com",
40 ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
41 fmt.Sprintf("(&(objectClass=User)(%s=%s))", "mail", "longfei6671@163.com"),
42 []string{"dn"},
43 nil,
44 )
45
46 searchResult, err := lc.Search(searchRequest)
47 if err != nil {
48 beego.Error("Search => ", err)
49 return
50 }
51
52 if len(searchResult.Entries) != 1 {
53 err = errors.New("ldap.no_user_found_or_many_users_found")
54 return
55 }
56
57 fmt.Printf("%+v = %d", searchResult.Entries, len(searchResult.Entries))
58
59 userDN := searchResult.Entries[0].DN
60
61 err = lc.Bind(userDN, password)
62 if err == nil {
63 result = true
64 } else {
65 beego.Error("Bind2 => ", err)
66 err = nil
67 }
68 return
69}
70
71func AddMember(account, password string) error {
72 lc, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", "192.168.3.104", 389))

Callers

nothing calls this directly

Calls 2

BindMethod · 0.45
SearchMethod · 0.45

Tested by

no test coverage detected