diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index 26a2a493..6026d0ec 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -1,7 +1,6 @@ import type { Metadata } from "next"; import { Analytics } from "@vercel/analytics/react"; import { SpeedInsights } from "@vercel/speed-insights/next"; -import { WebVitalsReporter } from "@/components/observability/WebVitalsReporter"; import "./globals.css"; export const metadata: Metadata = { @@ -35,7 +34,6 @@ export default function RootLayout({ {children} - diff --git a/frontend/middleware.ts b/frontend/middleware.ts index a47e4e39..7f0dde9d 100644 --- a/frontend/middleware.ts +++ b/frontend/middleware.ts @@ -57,6 +57,16 @@ function isPublicApi(pathname: string) { ); } +function shouldRefreshOptionalSupabaseSession(pathname: string) { + return ( + pathname.startsWith("/account") || + pathname.startsWith("/ops") || + pathname.startsWith("/api/ops/") || + pathname.startsWith("/api/payments/") || + pathname === "/api/system/status" + ); +} + function handleLegacyTokenGate(request: NextRequest) { const requiredToken = process.env.POLYWEATHER_DASHBOARD_ACCESS_TOKEN?.trim(); if (!requiredToken) { @@ -144,6 +154,15 @@ async function handleSupabaseAuthGate(request: NextRequest) { } async function handleSupabaseOptionalSession(request: NextRequest) { + const { pathname } = request.nextUrl; + if ( + isPublicPage(pathname) || + isPublicApi(pathname) || + !shouldRefreshOptionalSupabaseSession(pathname) + ) { + return NextResponse.next(); + } + const response = NextResponse.next({ request: { headers: request.headers,