grafana_login.go 875 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package login
  2. import (
  3. "crypto/subtle"
  4. "github.com/grafana/grafana/pkg/bus"
  5. m "github.com/grafana/grafana/pkg/models"
  6. "github.com/grafana/grafana/pkg/util"
  7. )
  8. var validatePassword = func(providedPassword string, userPassword string, userSalt string) error {
  9. passwordHashed := util.EncodePassword(providedPassword, userSalt)
  10. if subtle.ConstantTimeCompare([]byte(passwordHashed), []byte(userPassword)) != 1 {
  11. return ErrInvalidCredentials
  12. }
  13. return nil
  14. }
  15. var loginUsingGrafanaDB = func(query *m.LoginUserQuery) error {
  16. userQuery := m.GetUserByLoginQuery{LoginOrEmail: query.Username}
  17. if err := bus.Dispatch(&userQuery); err != nil {
  18. return err
  19. }
  20. user := userQuery.Result
  21. if user.IsDisabled {
  22. return ErrUserDisabled
  23. }
  24. if err := validatePassword(query.Password, user.Password, user.Salt); err != nil {
  25. return err
  26. }
  27. query.User = user
  28. return nil
  29. }