Skip to content

Commit

Permalink
[Donggrina#39] Feat: middleware 설정
Browse files Browse the repository at this point in the history
  • Loading branch information
DHyeon98 committed May 31, 2024
1 parent 3d1bdaf commit 152ae55
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions middleware.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

const PROTECTED_PAGES = ['/start-family'];
const PUBLIC_PAGES = ['/login'];

export default function middleware(request: NextRequest) {
const { cookies, nextUrl } = request;
const path = nextUrl.pathname;
const isProtectedPage = PROTECTED_PAGES.includes(path);
const isPublicPage = PUBLIC_PAGES.includes(path);

// 로그인 상태 확인
const hasCookie = cookies.has('accessToken');

// 쿼리 파라미터에서 token 값 확인
const hasToken = nextUrl.search.includes('token');

// /start-family 페이지로 접근하는데 token이 있을 경우 진행
// /start-family 페이지로 접근하는데 token이 없을 경우 리다이렉션
// 추후 배포됐을 때 수정.
if (path === '/start-family' && hasToken) {
return NextResponse.next();
} else if (path === '/start-family' && !hasToken) {
return NextResponse.redirect(new URL('/login', request.nextUrl));
}

// 비로그인 상태일 때 로그인이 필요한 페이지에 접근 시 리다이렉션
if (!hasCookie && isProtectedPage) {
return NextResponse.redirect(new URL('/login', request.nextUrl));
}

// 로그인 상태일 때 로그인 페이지에 접근 시 리다이렉션
if (hasCookie && isPublicPage) {
return NextResponse.redirect(new URL('/', request.nextUrl.origin));
}

return NextResponse.next();
}

export const config = {
matcher: ['/login', '/start-family'],
};

0 comments on commit 152ae55

Please sign in to comment.