mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
36 lines
824 B
Go
36 lines
824 B
Go
package login
|
|
|
|
import (
|
|
"crypto/subtle"
|
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
m "github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/util"
|
|
)
|
|
|
|
var validatePassword = func(providedPassword string, userPassword string, userSalt string) error {
|
|
passwordHashed := util.EncodePassword(providedPassword, userSalt)
|
|
if subtle.ConstantTimeCompare([]byte(passwordHashed), []byte(userPassword)) != 1 {
|
|
return ErrInvalidCredentials
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
var loginUsingGrafanaDB = func(query *m.LoginUserQuery) error {
|
|
userQuery := m.GetUserByLoginQuery{LoginOrEmail: query.Username}
|
|
|
|
if err := bus.Dispatch(&userQuery); err != nil {
|
|
return err
|
|
}
|
|
|
|
user := userQuery.Result
|
|
|
|
if err := validatePassword(query.Password, user.Password, user.Salt); err != nil {
|
|
return err
|
|
}
|
|
|
|
query.User = user
|
|
return nil
|
|
}
|