eny.space Landingpage
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(auth): redirect logged-in users from login/signup to dashboard

authored by

Sam Sauer and committed by
Tangled
0db6d6f0 17b7d3ef

+51
+29
lib/supabase/middleware.ts
··· 1 + import { createServerClient } from "@supabase/ssr"; 2 + import { type NextRequest, NextResponse } from "next/server"; 3 + 4 + export function createMiddlewareClient(request: NextRequest) { 5 + let response = NextResponse.next({ request }); 6 + 7 + const supabase = createServerClient( 8 + process.env.NEXT_PUBLIC_SUPABASE_URL!, 9 + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, 10 + { 11 + cookies: { 12 + getAll() { 13 + return request.cookies.getAll(); 14 + }, 15 + setAll(cookiesToSet) { 16 + cookiesToSet.forEach(({ name, value }) => 17 + request.cookies.set(name, value) 18 + ); 19 + response = NextResponse.next({ request }); 20 + cookiesToSet.forEach(({ name, value, options }) => 21 + response.cookies.set(name, value, options) 22 + ); 23 + }, 24 + }, 25 + } 26 + ); 27 + 28 + return { supabase, response }; 29 + }
+22
middleware.ts
··· 1 + import { type NextRequest, NextResponse } from "next/server"; 2 + import { createMiddlewareClient } from "@/lib/supabase/middleware"; 3 + 4 + const AUTH_ROUTES = ["/login", "/signup"]; 5 + 6 + export async function middleware(request: NextRequest) { 7 + const { supabase, response } = createMiddlewareClient(request); 8 + 9 + const { 10 + data: { user }, 11 + } = await supabase.auth.getUser(); 12 + 13 + if (user && AUTH_ROUTES.includes(request.nextUrl.pathname)) { 14 + return NextResponse.redirect(new URL("/dashboard", request.url)); 15 + } 16 + 17 + return response; 18 + } 19 + 20 + export const config = { 21 + matcher: ["/login", "/signup"], 22 + };