From 2f5ae85d337b32b8a874626e468bf3c57924b78c Mon Sep 17 00:00:00 2001 From: Karl Date: Mon, 6 Jun 2016 06:15:37 +0100 Subject: [PATCH] Initial patch for grafana/grafana#4267 (#5280) --- pkg/services/sqlstore/user.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/pkg/services/sqlstore/user.go b/pkg/services/sqlstore/user.go index 623e85ec472..3dc685cd7e5 100644 --- a/pkg/services/sqlstore/user.go +++ b/pkg/services/sqlstore/user.go @@ -161,13 +161,22 @@ func GetUserByLogin(query *m.GetUserByLoginQuery) error { } user := new(m.User) - if strings.Contains(query.LoginOrEmail, "@") { - user = &m.User{Email: query.LoginOrEmail} - } else { - user = &m.User{Login: query.LoginOrEmail} + + // Try and find the user by login first. + // It's not sufficient to assume that a LoginOrEmail with an "@" is an email. + user = &m.User{Login: query.LoginOrEmail} + has, err := x.Get(user) + + if err != nil { + return err } - has, err := x.Get(user) + if has == false && strings.Contains(query.LoginOrEmail, "@") { + // If the user wasn't found, and it contains an "@" fallback to finding the + // user by email. + user = &m.User{Email: query.LoginOrEmail} + has, err = x.Get(user) + } if err != nil { return err