浏览代码

Initial patch for grafana/grafana#4267 (#5280)

Karl 9 年之前
父节点
当前提交
2f5ae85d33
共有 1 个文件被更改,包括 14 次插入5 次删除
  1. 14 5
      pkg/services/sqlstore/user.go

+ 14 - 5
pkg/services/sqlstore/user.go

@@ -161,14 +161,23 @@ 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
+	}
+
+	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
 	} else if has == false {