| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package login
- import (
- "errors"
- "github.com/grafana/grafana/pkg/bus"
- "github.com/grafana/grafana/pkg/models"
- "github.com/grafana/grafana/pkg/services/ldap"
- )
- var (
- ErrEmailNotAllowed = errors.New("Required email domain not fulfilled")
- ErrInvalidCredentials = errors.New("Invalid Username or Password")
- ErrNoEmail = errors.New("Login provider didn't return an email address")
- ErrProviderDeniedRequest = errors.New("Login provider denied login request")
- ErrSignUpNotAllowed = errors.New("Signup is not allowed for this adapter")
- ErrTooManyLoginAttempts = errors.New("Too many consecutive incorrect login attempts for user. Login for user temporarily blocked")
- ErrPasswordEmpty = errors.New("No password provided")
- ErrUserDisabled = errors.New("User is disabled")
- )
- func Init() {
- bus.AddHandler("auth", AuthenticateUser)
- }
- // AuthenticateUser authenticates the user via username & password
- func AuthenticateUser(query *models.LoginUserQuery) error {
- if err := validateLoginAttempts(query.Username); err != nil {
- return err
- }
- if err := validatePasswordSet(query.Password); err != nil {
- return err
- }
- err := loginUsingGrafanaDB(query)
- if err == nil || (err != models.ErrUserNotFound && err != ErrInvalidCredentials && err != ErrUserDisabled) {
- return err
- }
- ldapEnabled, ldapErr := loginUsingLDAP(query)
- if ldapEnabled {
- if ldapErr == nil || ldapErr != ldap.ErrInvalidCredentials {
- return ldapErr
- }
- if err != ErrUserDisabled || ldapErr != ldap.ErrInvalidCredentials {
- err = ldapErr
- }
- }
- if err == ErrInvalidCredentials || err == ldap.ErrInvalidCredentials {
- saveInvalidLoginAttempt(query)
- return ErrInvalidCredentials
- }
- if err == models.ErrUserNotFound {
- return ErrInvalidCredentials
- }
- return err
- }
- func validatePasswordSet(password string) error {
- if len(password) == 0 {
- return ErrPasswordEmpty
- }
- return nil
- }
|