ldap_login.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package login
  2. import (
  3. "github.com/grafana/grafana/pkg/models"
  4. "github.com/grafana/grafana/pkg/services/multildap"
  5. "github.com/grafana/grafana/pkg/services/user"
  6. "github.com/grafana/grafana/pkg/setting"
  7. "github.com/grafana/grafana/pkg/util/errutil"
  8. )
  9. // getLDAPConfig gets LDAP config
  10. var getLDAPConfig = multildap.GetConfig
  11. // isLDAPEnabled checks if LDAP is enabled
  12. var isLDAPEnabled = multildap.IsEnabled
  13. // newLDAP creates multiple LDAP instance
  14. var newLDAP = multildap.New
  15. // loginUsingLDAP logs in user using LDAP. It returns whether LDAP is enabled and optional error and query arg will be
  16. // populated with the logged in user if successful.
  17. var loginUsingLDAP = func(query *models.LoginUserQuery) (bool, error) {
  18. enabled := isLDAPEnabled()
  19. if !enabled {
  20. return false, nil
  21. }
  22. config, err := getLDAPConfig()
  23. if err != nil {
  24. return true, errutil.Wrap("Failed to get LDAP config", err)
  25. }
  26. externalUser, err := newLDAP(config.Servers).Login(query)
  27. if err != nil {
  28. return true, err
  29. }
  30. login, err := user.Upsert(&user.UpsertArgs{
  31. ExternalUser: externalUser,
  32. SignupAllowed: setting.LDAPAllowSignup,
  33. })
  34. if err != nil {
  35. return true, err
  36. }
  37. query.User = login
  38. return true, nil
  39. }