mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Users: Enable case insensitive login by default (#66134)
* enable case insensitive by default * fix missing case-insensitive query * fix missing case insensitive query * fix missing case insensitive query in temp_user * skip integration testing in mysql * skip integration testing in mysql * use t.cleanup * lowercase only once * aligned to only using sql as that is what we do in other parts --------- Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
tempuser "github.com/grafana/grafana/pkg/services/temp_user"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
type store interface {
|
||||
@@ -18,7 +19,8 @@ type store interface {
|
||||
}
|
||||
|
||||
type xormStore struct {
|
||||
db db.DB
|
||||
db db.DB
|
||||
cfg *setting.Cfg
|
||||
}
|
||||
|
||||
func (ss *xormStore) UpdateTempUserStatus(ctx context.Context, cmd *tempuser.UpdateTempUserStatusCommand) error {
|
||||
@@ -102,7 +104,11 @@ func (ss *xormStore) GetTempUsersQuery(ctx context.Context, query *tempuser.GetT
|
||||
}
|
||||
|
||||
if query.Email != "" {
|
||||
rawSQL += ` AND tu.email=?`
|
||||
if ss.cfg.CaseInsensitiveLogin {
|
||||
rawSQL += ` AND LOWER(tu.email)=LOWER(?)`
|
||||
} else {
|
||||
rawSQL += ` AND tu.email=?`
|
||||
}
|
||||
params = append(params, query.Email)
|
||||
}
|
||||
|
||||
|
@@ -15,7 +15,7 @@ func TestIntegrationTempUserCommandsAndQueries(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skipping integration test")
|
||||
}
|
||||
var store store
|
||||
var store *xormStore
|
||||
var tempUser *tempuser.TempUser
|
||||
var err error
|
||||
cmd := tempuser.CreateTempUserCommand{
|
||||
@@ -27,7 +27,7 @@ func TestIntegrationTempUserCommandsAndQueries(t *testing.T) {
|
||||
}
|
||||
setup := func(t *testing.T) {
|
||||
db := db.InitTestDB(t)
|
||||
store = &xormStore{db: db}
|
||||
store = &xormStore{db: db, cfg: db.Cfg}
|
||||
tempUser, err = store.CreateTempUser(context.Background(), &cmd)
|
||||
require.Nil(t, err)
|
||||
}
|
||||
@@ -56,6 +56,31 @@ func TestIntegrationTempUserCommandsAndQueries(t *testing.T) {
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, 1, len(queryResult))
|
||||
})
|
||||
t.Run("Should not be able to get temp users by case-insentive email - case sensitive", func(t *testing.T) {
|
||||
if db.IsTestDbMySQL() {
|
||||
t.Skip("MySQL is case insensitive by default")
|
||||
}
|
||||
setup(t)
|
||||
store.cfg.CaseInsensitiveLogin = false
|
||||
query := tempuser.GetTempUsersQuery{Email: "E@as.co", Status: tempuser.TmpUserInvitePending}
|
||||
queryResult, err := store.GetTempUsersQuery(context.Background(), &query)
|
||||
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, 0, len(queryResult))
|
||||
})
|
||||
|
||||
t.Run("Should be able to get temp users by email - case insensitive", func(t *testing.T) {
|
||||
setup(t)
|
||||
store.cfg.CaseInsensitiveLogin = true
|
||||
query := tempuser.GetTempUsersQuery{Email: "E@as.co", Status: tempuser.TmpUserInvitePending}
|
||||
queryResult, err := store.GetTempUsersQuery(context.Background(), &query)
|
||||
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, 1, len(queryResult))
|
||||
t.Cleanup(func() {
|
||||
store.cfg.CaseInsensitiveLogin = false
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("Should be able to get temp users by code", func(t *testing.T) {
|
||||
setup(t)
|
||||
|
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
tempuser "github.com/grafana/grafana/pkg/services/temp_user"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
@@ -13,9 +14,10 @@ type Service struct {
|
||||
|
||||
func ProvideService(
|
||||
db db.DB,
|
||||
cfg *setting.Cfg,
|
||||
) tempuser.Service {
|
||||
return &Service{
|
||||
store: &xormStore{db: db},
|
||||
store: &xormStore{db: db, cfg: cfg},
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user