diff options
Diffstat (limited to 'apps/web/middleware.ts')
| -rw-r--r-- | apps/web/middleware.ts | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/apps/web/middleware.ts b/apps/web/middleware.ts new file mode 100644 index 0000000..e54008a --- /dev/null +++ b/apps/web/middleware.ts @@ -0,0 +1,27 @@ +import { type NextRequest, NextResponse } from "next/server" +import { updateSupabaseSession } from "@/lib/supabase/middleware" + +export async function middleware(request: NextRequest) { + const { user, supabaseResponse } = await updateSupabaseSession(request) + + const isReaderRoute = request.nextUrl.pathname.startsWith("/reader") + const isAuthRoute = request.nextUrl.pathname.startsWith("/sign-") + + if (!user && isReaderRoute) { + const signInUrl = new URL("/sign-in", request.url) + return NextResponse.redirect(signInUrl) + } + + if (user && isAuthRoute) { + const readerUrl = new URL("/reader", request.url) + return NextResponse.redirect(readerUrl) + } + + return supabaseResponse +} + +export const config = { + matcher: [ + "/((?!_next/static|_next/image|favicon.ico|manifest.json|sw.js|icons).*)", + ], +} |