package auth import ( "context" "net/http" "github.com/kierank/pipes/store" ) type contextKey string const userContextKey contextKey = "user" func (sm *SessionManager) RequireAuth(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { user, err := sm.GetCurrentUser(r) if err != nil || user == nil { http.Redirect(w, r, "/auth/login", http.StatusSeeOther) return } // Add user to context ctx := context.WithValue(r.Context(), userContextKey, user) next(w, r.WithContext(ctx)) } } func GetUserFromContext(ctx context.Context) *store.User { user, _ := ctx.Value(userContextKey).(*store.User) return user }