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