From eda442dbf938ab53175c8d965875d06d7edbcf20 Mon Sep 17 00:00:00 2001 From: Eric Uldall Date: Wed, 19 Oct 2016 21:45:10 -0700 Subject: [PATCH] added support to login user oauth user by email only (#6330) * added support to login user oauth user by email only * added sql handler * fixed model method name from GetUserByEmail to GetUserByEmailQuery * fixed variable declaration typo --- pkg/api/login_oauth.go | 2 +- pkg/models/user.go | 5 +++++ pkg/services/sqlstore/user.go | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/pkg/api/login_oauth.go b/pkg/api/login_oauth.go index a8b32e93d3c..bf280776575 100644 --- a/pkg/api/login_oauth.go +++ b/pkg/api/login_oauth.go @@ -130,7 +130,7 @@ func OAuthLogin(ctx *middleware.Context) { return } - userQuery := m.GetUserByLoginQuery{LoginOrEmail: userInfo.Email} + userQuery := m.GetUserByEmailQuery{Email: userInfo.Email} err = bus.Dispatch(&userQuery) // create account if missing diff --git a/pkg/models/user.go b/pkg/models/user.go index d2dcdf0a5c9..1f99f866c86 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -96,6 +96,11 @@ type GetUserByLoginQuery struct { Result *User } +type GetUserByEmailQuery struct { + Email string + Result *User +} + type GetUserByIdQuery struct { Id int64 Result *User diff --git a/pkg/services/sqlstore/user.go b/pkg/services/sqlstore/user.go index bbf21296519..bb21995f54a 100644 --- a/pkg/services/sqlstore/user.go +++ b/pkg/services/sqlstore/user.go @@ -19,6 +19,7 @@ func init() { bus.AddHandler("sql", UpdateUser) bus.AddHandler("sql", ChangeUserPassword) bus.AddHandler("sql", GetUserByLogin) + bus.AddHandler("sql", GetUserByEmail) bus.AddHandler("sql", SetUsingOrg) bus.AddHandler("sql", GetUserProfile) bus.AddHandler("sql", GetSignedInUser) @@ -193,6 +194,27 @@ func GetUserByLogin(query *m.GetUserByLoginQuery) error { return nil } +func GetUserByEmail(query *m.GetUserByEmailQuery) error { + if query.Email == "" { + return m.ErrUserNotFound + } + + user := new(m.User) + + user = &m.User{Email: query.Email} + has, err := x.Get(user) + + if err != nil { + return err + } else if has == false { + return m.ErrUserNotFound + } + + query.Result = user + + return nil +} + func UpdateUser(cmd *m.UpdateUserCommand) error { return inTransaction2(func(sess *session) error {