diff options
author | Frédéric Guillot <fred@miniflux.net> | 2019-01-21 20:21:05 -0800 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2019-01-21 20:21:05 -0800 |
commit | 7897d8a8ad87c0bb26bb8156ba09fc9fab62f565 (patch) | |
tree | 9043558e58d7fa34a122d626f03ebd79aac010da /ui/middleware.go | |
parent | 6378ad27342da3b4c531539bcf2c539b4ac92c57 (diff) |
Handle the case when application session is expired and not user session
Diffstat (limited to 'ui/middleware.go')
-rw-r--r-- | ui/middleware.go | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/ui/middleware.go b/ui/middleware.go index 237432a..81fb3a5 100644 --- a/ui/middleware.go +++ b/ui/middleware.go @@ -61,12 +61,21 @@ func (m *middleware) handleAppSession(next http.Handler) http.Handler { session := m.getAppSessionValueFromCookie(r) if session == nil { - logger.Debug("[UI:AppSession] Session not found") - - session, err = m.store.CreateSession() - if err != nil { - html.ServerError(w, r, err) - return + if (request.IsAuthenticated(r)) { + userID := request.UserID(r) + logger.Debug("[UI:AppSession] Cookie expired but user #%d is logged: creating a new session", userID) + session, err = m.store.CreateAppSessionWithUserPrefs(userID) + if err != nil { + html.ServerError(w, r, err) + return + } + } else { + logger.Debug("[UI:AppSession] Session not found, creating a new one") + session, err = m.store.CreateAppSession() + if err != nil { + html.ServerError(w, r, err) + return + } } http.SetCookie(w, cookie.New(cookie.CookieSessionID, session.ID, m.cfg.IsHTTPS, m.cfg.BasePath())) @@ -104,7 +113,7 @@ func (m *middleware) getAppSessionValueFromCookie(r *http.Request) *model.Sessio return nil } - session, err := m.store.Session(cookieValue) + session, err := m.store.AppSession(cookieValue) if err != nil { logger.Error("[UI:AppSession] %v", err) return nil |