Avoid duplicate queries in auth (#827)

Avoid identical making calls to GetUserByID(..) in SignedInUser(..)
This commit is contained in:
Ethan Koenig 2017-02-05 08:10:46 -05:00 committed by Lunny Xiao
parent bf647ce143
commit e86d935175
1 changed files with 49 additions and 58 deletions

View File

@ -69,14 +69,7 @@ func SignedInID(ctx *macaron.Context, sess session.Store) int64 {
uid := sess.Get("uid")
if uid == nil {
return 0
}
if id, ok := uid.(int64); ok {
if _, err := models.GetUserByID(id); err != nil {
if !models.IsErrUserNotExist(err) {
log.Error(4, "GetUserById: %v", err)
}
return 0
}
} else if id, ok := uid.(int64); ok {
return id
}
return 0
@ -89,9 +82,15 @@ func SignedInUser(ctx *macaron.Context, sess session.Store) (*models.User, bool)
return nil, false
}
uid := SignedInID(ctx, sess)
if uid := SignedInID(ctx, sess); uid > 0 {
user, err := models.GetUserByID(uid)
if err == nil {
return user, false
} else if !models.IsErrUserNotExist(err) {
log.Error(4, "GetUserById: %v", err)
}
}
if uid <= 0 {
if setting.Service.EnableReverseProxyAuth {
webAuthUser := ctx.Req.Header.Get(setting.ReverseProxyAuthUser)
if len(webAuthUser) > 0 {
@ -143,14 +142,6 @@ func SignedInUser(ctx *macaron.Context, sess session.Store) (*models.User, bool)
return nil, false
}
u, err := models.GetUserByID(uid)
if err != nil {
log.Error(4, "GetUserById: %v", err)
return nil, false
}
return u, false
}
// Form form binding interface
type Form interface {
binding.Validator