From 65699b2d46229ae4ba13b9317c7ffdef064cef18 Mon Sep 17 00:00:00 2001 From: Luiz Vasconcelos Date: Sun, 27 Oct 2024 15:27:53 +0100 Subject: [PATCH] Add option for protected router with statuscode --- middleware.go | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/middleware.go b/middleware.go index a0568a5..66653e1 100644 --- a/middleware.go +++ b/middleware.go @@ -47,18 +47,39 @@ func (m *Middleware) AddUserInfo(next http.Handler) http.Handler { }) } +// ProtectedRoute Checks if session and token are present, if not return a 401 response func (m *Middleware) ProtectedRoute(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { session, err := m.s.Get(r) if err != nil { - http.Redirect(w, r, "/signin", http.StatusSeeOther) + w.WriteHeader(http.StatusUnauthorized) return } token := session.Values["access_token"] if token == "" || token == nil { - http.Redirect(w, r, "/signin", http.StatusSeeOther) + w.WriteHeader(http.StatusUnauthorized) + return + } + + next.ServeHTTP(w, r) + }) +} + +// ProtectedRouteWithRedirect Checks if session and token are present, if not return a redirect to /login +func (m *Middleware) ProtectedRouteWithRedirect(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + session, err := m.s.Get(r) + if err != nil { + http.Redirect(w, r, "/login", http.StatusSeeOther) + return + } + + token := session.Values["access_token"] + + if token == "" || token == nil { + http.Redirect(w, r, "/login", http.StatusSeeOther) return }