appview/middleware: indiscriminately try to refresh the session #600

merged
opened by oppi.li targeting master from push-rurrtsvmnvku

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 me@oppi.li

Changed files
+14
appview
middleware
state
+13
appview/middleware/middleware.go
··· 43 44 type middlewareFunc func(http.Handler) http.Handler 45 46 func AuthMiddleware(a *oauth.OAuth) middlewareFunc { 47 return func(next http.Handler) http.Handler { 48 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
··· 43 44 type middlewareFunc func(http.Handler) http.Handler 45 46 + func (mw *Middleware) TryRefreshSession() middlewareFunc { 47 + return func(next http.Handler) http.Handler { 48 + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 49 + _, auth, err := mw.oauth.GetSession(r) 50 + if err != nil { 51 + log.Println("could not refresh session", "err", err, "auth", auth) 52 + } 53 + 54 + next.ServeHTTP(w, r) 55 + }) 56 + } 57 + } 58 + 59 func AuthMiddleware(a *oauth.OAuth) middlewareFunc { 60 return func(next http.Handler) http.Handler { 61 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+1
appview/state/router.go
··· 34 s.pages, 35 ) 36 37 router.Get("/favicon.svg", s.Favicon) 38 router.Get("/favicon.ico", s.Favicon) 39
··· 34 s.pages, 35 ) 36 37 + router.Use(middleware.TryRefreshSession()) 38 router.Get("/favicon.svg", s.Favicon) 39 router.Get("/favicon.ico", s.Favicon) 40