ldapauth.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package ldapauth
  2. import (
  3. "errors"
  4. "fmt"
  5. "net/url"
  6. "github.com/gogits/gogs/modules/ldap"
  7. "github.com/grafana/grafana/pkg/log"
  8. "github.com/grafana/grafana/pkg/setting"
  9. )
  10. var (
  11. ErrInvalidCredentials = errors.New("Invalid Username or Password")
  12. )
  13. func Login(username, password string) error {
  14. url, err := url.Parse(setting.LdapUrls[0])
  15. if err != nil {
  16. return err
  17. }
  18. log.Info("Host: %v", url.Host)
  19. conn, err := ldap.Dial("tcp", url.Host)
  20. if err != nil {
  21. return err
  22. }
  23. defer conn.Close()
  24. bindFormat := "cn=%s,dc=grafana,dc=org"
  25. nx := fmt.Sprintf(bindFormat, username)
  26. err = conn.Bind(nx, password)
  27. if err != nil {
  28. if ldapErr, ok := err.(*ldap.Error); ok {
  29. if ldapErr.ResultCode == 49 {
  30. return ErrInvalidCredentials
  31. }
  32. }
  33. return err
  34. }
  35. return nil
  36. // search := ldap.NewSearchRequest(url.Path,
  37. // ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
  38. // fmt.Sprintf(ls.Filter, name),
  39. // []string{ls.AttributeUsername, ls.AttributeName, ls.AttributeSurname, ls.AttributeMail},
  40. // nil)
  41. // sr, err := l.Search(search)
  42. // if err != nil {
  43. // log.Debug("LDAP Authen OK but not in filter %s", name)
  44. // return "", "", "", "", false
  45. // }
  46. }