Add option for protected router with statuscode #2

Merged
luiz merged 1 commits from feature/middleware into main 2024-10-27 14:28:38 +00:00
1 changed files with 23 additions and 2 deletions

View File

@ -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 { func (m *Middleware) ProtectedRoute(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
session, err := m.s.Get(r) session, err := m.s.Get(r)
if err != nil { if err != nil {
http.Redirect(w, r, "/signin", http.StatusSeeOther) w.WriteHeader(http.StatusUnauthorized)
return return
} }
token := session.Values["access_token"] token := session.Values["access_token"]
if token == "" || token == nil { 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 return
} }