From 6e9665ae28934b377b725ff10de98f6cfe028679 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Thu, 25 Sep 2025 15:46:39 +0100 Subject: [PATCH] appview/middleware: indiscriminately try to refresh the session Change-Id: rurrtsvmnvkuwumpzrwuvlynustnxstp previously, we would only refresh sessions when authenticated requests took place. the new middleware attempts a refresh for every request, if expiry is approaching (<5m). this way, user sessions remain refreshing by simply hanging out on tangled. Signed-off-by: oppiliappan --- appview/middleware/middleware.go | 13 +++++++++++++ appview/state/router.go | 1 + 2 files changed, 14 insertions(+) diff --git a/appview/middleware/middleware.go b/appview/middleware/middleware.go index 4e4573f4..8a113631 100644 --- a/appview/middleware/middleware.go +++ b/appview/middleware/middleware.go @@ -43,6 +43,19 @@ func New(oauth *oauth.OAuth, db *db.DB, enforcer *rbac.Enforcer, repoResolver *r type middlewareFunc func(http.Handler) http.Handler +func (mw *Middleware) TryRefreshSession() middlewareFunc { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, auth, err := mw.oauth.GetSession(r) + if err != nil { + log.Println("could not refresh session", "err", err, "auth", auth) + } + + next.ServeHTTP(w, r) + }) + } +} + func AuthMiddleware(a *oauth.OAuth) middlewareFunc { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/appview/state/router.go b/appview/state/router.go index bad1dd25..756547c2 100644 --- a/appview/state/router.go +++ b/appview/state/router.go @@ -34,6 +34,7 @@ func (s *State) Router() http.Handler { s.pages, ) + router.Use(middleware.TryRefreshSession()) router.Get("/favicon.svg", s.Favicon) router.Get("/favicon.ico", s.Favicon) -- 2.43.0