diff --git a/src/app/(user)/mypage/layout.tsx b/src/app/(user)/mypage/layout.tsx
index 9314c0d8..5c3fc051 100644
--- a/src/app/(user)/mypage/layout.tsx
+++ b/src/app/(user)/mypage/layout.tsx
@@ -1,5 +1,3 @@
-import { redirect } from 'next/navigation';
-
import { dehydrate, HydrationBoundary } from '@tanstack/react-query';
import { API } from '@/api';
@@ -10,17 +8,15 @@ interface Props {
children: React.ReactNode;
}
+export const dynamic = 'force-dynamic';
+
const MyPageLayout = async ({ children }: Props) => {
const queryClient = getQueryClient();
- try {
- await queryClient.fetchQuery({
- queryKey: userKeys.me(),
- queryFn: () => API.userService.getMe(),
- });
- } catch {
- redirect('/login');
- }
+ await queryClient.fetchQuery({
+ queryKey: userKeys.me(),
+ queryFn: () => API.userService.getMe(),
+ });
return {children};
};
diff --git a/src/app/(user)/profile/[userId]/layout.tsx b/src/app/(user)/profile/[userId]/layout.tsx
index f174a250..d0d00266 100644
--- a/src/app/(user)/profile/[userId]/layout.tsx
+++ b/src/app/(user)/profile/[userId]/layout.tsx
@@ -1,4 +1,4 @@
-import { redirect } from 'next/navigation';
+import { notFound, redirect } from 'next/navigation';
import { dehydrate, HydrationBoundary } from '@tanstack/react-query';
@@ -15,22 +15,19 @@ const ProfileLayout = async ({ children, params }: Props) => {
const { userId: id } = await params;
const userId = Number(id);
- const { cookies } = await import('next/headers');
- const cookieStore = await cookies();
- const myId = Number(cookieStore.get('userId')?.value);
-
- // 본인 id와 같은지 확인 후 같으면 mypage로 리다이렉트
- if (userId === myId) {
- redirect('/mypage');
- }
+ // userId가 숫자가 아닌 경우 notFound redirect 처리
+ if (isNaN(userId)) notFound();
const queryClient = getQueryClient();
- await queryClient.fetchQuery({
+ const user = await queryClient.fetchQuery({
queryKey: userKeys.item(userId),
queryFn: () => API.userService.getUser({ userId }),
});
+ // isFollow가 null이면 본인 페이지 이므로 mypage로 redirect 처리
+ if (user.isFollow === null) redirect('/mypage');
+
return {children};
};
diff --git a/src/mock/service/user/user-mock.ts b/src/mock/service/user/user-mock.ts
index 389cde55..6e87ffc0 100644
--- a/src/mock/service/user/user-mock.ts
+++ b/src/mock/service/user/user-mock.ts
@@ -15,7 +15,7 @@ export const mockUserItems: User[] = [
createdAt: '2025-12-07T17:00:00+09:00',
groupJoinedCnt: 5,
groupCreatedCnt: 3,
- isFollow: true,
+ isFollow: null,
},
{
userId: 2,
diff --git a/src/types/service/user.ts b/src/types/service/user.ts
index 71eaa520..18fe57f0 100644
--- a/src/types/service/user.ts
+++ b/src/types/service/user.ts
@@ -11,7 +11,7 @@ export interface User {
groupCreatedCnt: number;
isNotificationEnabled: boolean;
createdAt: string;
- isFollow: boolean;
+ isFollow: boolean | null;
}
export interface GetUserPathParams {