diff options
Diffstat (limited to 'middleware/user_session.go')
-rw-r--r-- | middleware/user_session.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/middleware/user_session.go b/middleware/user_session.go index 2cb9f8a..b27858f 100644 --- a/middleware/user_session.go +++ b/middleware/user_session.go @@ -9,6 +9,8 @@ import ( "net/http" "github.com/miniflux/miniflux/http/cookie" + "github.com/miniflux/miniflux/http/request" + "github.com/miniflux/miniflux/http/response" "github.com/miniflux/miniflux/http/route" "github.com/miniflux/miniflux/logger" "github.com/miniflux/miniflux/model" @@ -19,17 +21,18 @@ import ( // UserSession handles the user session middleware. func (m *Middleware) UserSession(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - session := m.getSessionFromCookie(r) + session := m.getUserSessionFromCookie(r) if session == nil { logger.Debug("[Middleware:UserSession] Session not found") if m.isPublicRoute(r) { next.ServeHTTP(w, r) } else { - http.Redirect(w, r, route.Path(m.router, "login"), http.StatusFound) + response.Redirect(w, r, route.Path(m.router, "login")) } } else { logger.Debug("[Middleware:UserSession] %s", session) + ctx := r.Context() ctx = context.WithValue(ctx, UserIDContextKey, session.UserID) ctx = context.WithValue(ctx, IsAuthenticatedContextKey, true) @@ -58,13 +61,13 @@ func (m *Middleware) isPublicRoute(r *http.Request) bool { } } -func (m *Middleware) getSessionFromCookie(r *http.Request) *model.UserSession { - sessionCookie, err := r.Cookie(cookie.CookieUserSessionID) - if err == http.ErrNoCookie { +func (m *Middleware) getUserSessionFromCookie(r *http.Request) *model.UserSession { + cookieValue := request.Cookie(r, cookie.CookieUserSessionID) + if cookieValue == "" { return nil } - session, err := m.store.UserSessionByToken(sessionCookie.Value) + session, err := m.store.UserSessionByToken(cookieValue) if err != nil { logger.Error("[Middleware:UserSession] %v", err) return nil |