// apps/admin/src/middleware.ts // Supabase 세션 갱신 미들웨어 — 모든 요청에서 쿠키 기반 세션을 갱신 import { NextResponse, type NextRequest } from 'next/server' import { createServerClient, type CookieOptions } from '@supabase/ssr' export async function middleware(request: NextRequest): Promise { const response = NextResponse.next({ request: { headers: request.headers } }) const url = process.env.NEXT_PUBLIC_SUPABASE_URL const key = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY if (!url || !key) return response const supabase = createServerClient(url, key, { cookies: { getAll() { return request.cookies.getAll() }, setAll(cookiesToSet: Array<{ name: string; value: string; options: CookieOptions }>) { cookiesToSet.forEach(({ name, value, options }) => { request.cookies.set({ name, value, ...options }) response.cookies.set({ name, value, ...options }) }) }, }, }) // 세션 갱신 (토큰 리프레시) await supabase.auth.getUser() return response } export const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], }