ldap_login.go 975 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package login
  2. import (
  3. "github.com/grafana/grafana/pkg/models"
  4. LDAP "github.com/grafana/grafana/pkg/services/ldap"
  5. "github.com/grafana/grafana/pkg/util/errutil"
  6. )
  7. var newLDAP = LDAP.New
  8. var getLDAPConfig = LDAP.GetConfig
  9. var isLDAPEnabled = LDAP.IsEnabled
  10. // loginUsingLdap logs in user using LDAP. It returns whether LDAP is enabled and optional error and query arg will be
  11. // populated with the logged in user if successful.
  12. var loginUsingLdap = func(query *models.LoginUserQuery) (bool, error) {
  13. enabled := isLDAPEnabled()
  14. if !enabled {
  15. return false, nil
  16. }
  17. config, err := getLDAPConfig()
  18. if err != nil {
  19. return true, errutil.Wrap("Failed to get LDAP config", err)
  20. }
  21. if len(config.Servers) == 0 {
  22. return true, ErrNoLDAPServers
  23. }
  24. for _, server := range config.Servers {
  25. auth := newLDAP(server)
  26. err := auth.Login(query)
  27. if err == nil || err != LDAP.ErrInvalidCredentials {
  28. return true, err
  29. }
  30. }
  31. return true, LDAP.ErrInvalidCredentials
  32. }