diff --git a/src/middleware.ts b/src/middleware.ts new file mode 100644 index 00000000..c62c47a5 --- /dev/null +++ b/src/middleware.ts @@ -0,0 +1,31 @@ +import { NextRequest, NextResponse } from 'next/server'; + +export const middleware = (request: NextRequest) => { + // const accessToken = request.cookies.get('accessToken'); + const refreshToken = request.cookies.get('refreshToken'); + + const protectedPaths = ['/mypage', '/create-group', '/message', '/schedule', '/notification']; + const isProtected = protectedPaths.some((path) => request.nextUrl.pathname.startsWith(path)); + + // 보호되지 않은 경로는 그냥 통과 + if (!isProtected) { + return NextResponse.next(); + } + + console.log(`refreshToken 보유 여부`); + console.log(refreshToken); + + // 둘 다 없으면 로그인 페이지로 redirect + if (!refreshToken) { + const loginUrl = new URL('/login', request.url); + loginUrl.searchParams.set('error', 'unauthorized'); + loginUrl.searchParams.set('path', request.nextUrl.pathname); + return NextResponse.redirect(loginUrl); + } + + return NextResponse.next(); +}; + +export const config = { + matcher: ['/((?!api|_next/static|_next/image|favicon.ico|login|signup).*)'], +};