mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 23:12:30 +08:00

* db: add login attempt migrations * db: add possibility to create login attempts * db: add possibility to retrieve login attempt count per username * auth: validation and update of login attempts for invalid credentials If login attempt count for user authenticating is 5 or more the last 5 minutes we temporarily block the user access to login * db: add possibility to delete expired login attempts * cleanup: Delete login attempts older than 10 minutes The cleanup job are running continuously and triggering each 10 minute * fix typo: rename consequent to consequent * auth: enable login attempt validation for ldap logins * auth: disable login attempts validation by configuration Setting is named DisableLoginAttemptsValidation and is false by default Config disable_login_attempts_validation is placed under security section #7616 * auth: don't run cleanup of login attempts if feature is disabled #7616 * auth: rename settings.go to ldap_settings.go * auth: refactor AuthenticateUser Extract grafana login, ldap login and login attemp validation together with their tests to separate files. Enables testing of many more aspects when authenticating a user. #7616 * auth: rename login attempt validation to brute force login protection Setting DisableLoginAttemptsValidation => DisableBruteForceLoginProtection Configuration disable_login_attempts_validation => disable_brute_force_login_protection #7616
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package sqlutil
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/go-xorm/xorm"
|
|
)
|
|
|
|
type TestDB struct {
|
|
DriverName string
|
|
ConnStr string
|
|
}
|
|
|
|
var TestDB_Sqlite3 = TestDB{DriverName: "sqlite3", ConnStr: ":memory:?_loc=Local"}
|
|
var TestDB_Mysql = TestDB{DriverName: "mysql", ConnStr: "grafana:password@tcp(localhost:3306)/grafana_tests?collation=utf8mb4_unicode_ci&loc=Local"}
|
|
var TestDB_Postgres = TestDB{DriverName: "postgres", ConnStr: "user=grafanatest password=grafanatest host=localhost port=5432 dbname=grafanatest sslmode=disable"}
|
|
|
|
func CleanDB(x *xorm.Engine) {
|
|
if x.DriverName() == "postgres" {
|
|
sess := x.NewSession()
|
|
defer sess.Close()
|
|
|
|
if _, err := sess.Exec("DROP SCHEMA public CASCADE;"); err != nil {
|
|
panic("Failed to drop schema public")
|
|
}
|
|
|
|
if _, err := sess.Exec("CREATE SCHEMA public;"); err != nil {
|
|
panic("Failed to create schema public")
|
|
}
|
|
} else if x.DriverName() == "mysql" {
|
|
tables, _ := x.DBMetas()
|
|
sess := x.NewSession()
|
|
defer sess.Close()
|
|
|
|
for _, table := range tables {
|
|
if _, err := sess.Exec("set foreign_key_checks = 0"); err != nil {
|
|
panic("failed to disable foreign key checks")
|
|
}
|
|
if _, err := sess.Exec("drop table " + table.Name + " ;"); err != nil {
|
|
panic(fmt.Sprintf("failed to delete table: %v, err: %v", table.Name, err))
|
|
}
|
|
if _, err := sess.Exec("set foreign_key_checks = 1"); err != nil {
|
|
panic("failed to disable foreign key checks")
|
|
}
|
|
}
|
|
}
|
|
}
|