Ready to release 3.0.2
This commit is contained in:
@ -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)
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user