Ready to release 3.0.2

This commit is contained in:
zicla
2019-05-27 00:41:24 +08:00
parent ddf67bee70
commit af41e894bf
13 changed files with 65 additions and 24 deletions

View File

@ -15,6 +15,7 @@ import (
type UserController struct {
BaseController
preferenceService *PreferenceService
userService *UserService
}
func (this *UserController) Init() {
@ -24,6 +25,12 @@ func (this *UserController) Init() {
if b, ok := b.(*PreferenceService); ok {
this.preferenceService = b
}
b = core.CONTEXT.GetBean(this.userService)
if b, ok := b.(*UserService); ok {
this.userService = b
}
}
func (this *UserController) RegisterRoutes() map[string]func(writer http.ResponseWriter, request *http.Request) {
@ -226,12 +233,11 @@ func (this *UserController) Detail(writer http.ResponseWriter, request *http.Req
func (this *UserController) Logout(writer http.ResponseWriter, request *http.Request) *result.WebResult {
//expire session.
sessionCookie, err := request.Cookie(core.COOKIE_AUTH_KEY)
if err != nil {
return this.Success("OK")
//try to find from SessionCache.
sessionId := util.GetSessionUuidFromRequest(request, core.COOKIE_AUTH_KEY)
if sessionId == "" {
return nil
}
sessionId := sessionCookie.Value
user := this.findUser(request)
if user != nil {
@ -241,7 +247,7 @@ func (this *UserController) Logout(writer http.ResponseWriter, request *http.Req
}
//delete session.
_, err = core.CONTEXT.GetSessionCache().Delete(sessionId)
_, err := core.CONTEXT.GetSessionCache().Delete(sessionId)
if err != nil {
this.logger.Error("error while deleting session.")
}
@ -327,6 +333,12 @@ func (this *UserController) ToggleStatus(writer http.ResponseWriter, request *ht
currentUser = this.userDao.Save(currentUser)
cacheUsers := this.userService.FindCacheUsersByUuid(currentUser.Uuid)
this.logger.Info("find %d cache users", len(cacheUsers))
for _, u := range cacheUsers {
u.Status = currentUser.Status
}
return this.Success(currentUser)
}

View File

@ -136,3 +136,25 @@ func (this *UserService) PreHandle(writer http.ResponseWriter, request *http.Req
}
}
//find a cache user by its userUuid
func (this *UserService) FindCacheUsersByUuid(userUuid string) []*User {
var users []*User
//let session user work.
core.CONTEXT.GetSessionCache().Foreach(func(key interface{}, cacheItem *cache.Item) {
if cacheItem == nil || cacheItem.Data() == nil {
return
}
if value, ok := cacheItem.Data().(*User); ok {
var user = value
if user.Uuid == userUuid {
users = append(users, user)
}
} else {
this.logger.Error("cache item not store the *User")
}
})
return users
}