Skip to content

Commit 074d152

Browse files
committed
feat(supabase): add SSR middleware for session cookie refresh (required for Next.js App Router)
1 parent 8e85816 commit 074d152

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

middleware.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { NextRequest, NextResponse } from "next/server";
2+
import { createServerClient, type CookieOptions } from "@supabase/ssr";
3+
4+
export async function middleware(request: NextRequest) {
5+
let response = NextResponse.next({
6+
request: {
7+
headers: request.headers,
8+
},
9+
});
10+
11+
const supabase = createServerClient(
12+
process.env.NEXT_PUBLIC_SUPABASE_URL!,
13+
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
14+
{
15+
cookies: {
16+
get(name: string) {
17+
return request.cookies.get(name)?.value;
18+
},
19+
set(name: string, value: string, options: CookieOptions) {
20+
request.cookies.set({ name, value, ...options });
21+
response.cookies.set({ name, value, ...options });
22+
},
23+
remove(name: string, options: CookieOptions) {
24+
request.cookies.set({ name, value: "", ...options });
25+
response.cookies.set({ name, value: "", ...options });
26+
},
27+
},
28+
}
29+
);
30+
31+
// This will refresh the session if needed and set cookies on the response
32+
await supabase.auth.getUser();
33+
34+
return response;
35+
}
36+
37+
export const config = {
38+
matcher: [
39+
"/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)",
40+
],
41+
};

0 commit comments

Comments
 (0)