1- import { createServerClient , type CookieOptions } from '@supabase/ssr'
21import { NextResponse } from 'next/server'
32import type { NextRequest } from 'next/server'
43
5- export async function middleware ( request : NextRequest ) {
4+ export function middleware ( request : NextRequest ) {
5+
66 const requestId = `mid_${ crypto . randomUUID ( ) } `
77 const startTime = Date . now ( )
8-
8+
99 console . log ( `[Middleware ${ requestId } ] ${ request . method } ${ request . nextUrl . pathname } ` )
1010
11- let response = NextResponse . next ( {
12- request : {
13- headers : request . headers ,
14- } ,
15- } )
16-
17- const supabase = createServerClient (
18- process . env . NEXT_PUBLIC_SUPABASE_URL ! ,
19- process . env . NEXT_PUBLIC_SUPABASE_ANON_KEY ! ,
20- {
21- cookies : {
22- get ( name : string ) {
23- return request . cookies . get ( name ) ?. value
24- } ,
25- set ( name : string , value : string , options : CookieOptions ) {
26- request . cookies . set ( {
27- name,
28- value,
29- ...options ,
30- } )
31- response = NextResponse . next ( {
32- request : {
33- headers : request . headers ,
34- } ,
35- } )
36- response . cookies . set ( {
37- name,
38- value,
39- ...options ,
40- } )
41- } ,
42- remove ( name : string , options : CookieOptions ) {
43- request . cookies . set ( {
44- name,
45- value : '' ,
46- ...options ,
47- } )
48- response = NextResponse . next ( {
49- request : {
50- headers : request . headers ,
51- } ,
52- } )
53- response . cookies . set ( {
54- name,
55- value : '' ,
56- ...options ,
57- } )
58- } ,
59- } ,
60- }
61- )
62-
63- const {
64- data : { user } ,
65- } = await supabase . auth . getUser ( )
66-
67- const protectedRoutes = [ '/project' , '/projects' , '/settings' , '/api-docs' ]
68- const isProtectedRoute = protectedRoutes . some ( path => request . nextUrl . pathname . startsWith ( path ) )
69-
70- if ( ! user && isProtectedRoute ) {
71- const url = request . nextUrl . clone ( )
72- url . pathname = '/'
73- return NextResponse . redirect ( url )
74- }
75-
11+
7612 if ( request . nextUrl . pathname . startsWith ( '/api/' ) ) {
7713 const response = NextResponse . next ( )
7814
@@ -139,6 +75,9 @@ export async function middleware(request: NextRequest) {
13975
14076 return response
14177 }
78+
79+ const response = NextResponse . next ( )
80+
14281 response . headers . set ( 'X-Frame-Options' , 'DENY' )
14382 response . headers . set ( 'X-Content-Type-Options' , 'nosniff' )
14483 response . headers . set ( 'Referrer-Policy' , 'strict-origin-when-cross-origin' )
@@ -170,4 +109,4 @@ export const config = {
170109
171110 '/((?!_next/static|_next/image|favicon.ico|public|icons).*)' ,
172111 ] ,
173- }
112+ }
0 commit comments