From 611e278ae46f5155664bdb31493cdad4cab319cc Mon Sep 17 00:00:00 2001 From: hyeonjiroh Date: Wed, 21 May 2025 22:39:26 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EC=9D=B8=EC=A6=9D=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EC=97=90=20=EB=94=B0=EB=9D=BC=20=EB=A6=AC=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EB=A0=89=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(auth)/layout.tsx | 25 +++++++++++++++++++++++++ src/app/(board)/layout.tsx | 17 +++++++++++++++++ src/app/(team)/layout.tsx | 17 +++++++++++++++++ src/app/(user)/layout.tsx | 17 +++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 src/app/(auth)/layout.tsx create mode 100644 src/app/(board)/layout.tsx create mode 100644 src/app/(team)/layout.tsx create mode 100644 src/app/(user)/layout.tsx diff --git a/src/app/(auth)/layout.tsx b/src/app/(auth)/layout.tsx new file mode 100644 index 00000000..85e72811 --- /dev/null +++ b/src/app/(auth)/layout.tsx @@ -0,0 +1,25 @@ +import { cookies } from 'next/headers'; +import { redirect } from 'next/navigation'; +import { ROUTES } from '@/constants/routes'; +import { getUserGroups } from '@/lib/apis/user'; + +export default async function AuthLayout({ + children, +}: { + children: React.ReactNode; +}) { + const accessToken = cookies().get('accessToken')?.value; + + if (accessToken) { + const userGroupsData = await getUserGroups({}); + const firstGroupId = userGroupsData?.[0]?.id; + + if (firstGroupId) { + redirect(ROUTES.TEAM(firstGroupId)); + } else { + redirect(ROUTES.TEAM_NO); + } + } + + return <>{children}; +} diff --git a/src/app/(board)/layout.tsx b/src/app/(board)/layout.tsx new file mode 100644 index 00000000..41589148 --- /dev/null +++ b/src/app/(board)/layout.tsx @@ -0,0 +1,17 @@ +import { cookies } from 'next/headers'; +import { redirect } from 'next/navigation'; +import { ROUTES } from '@/constants/routes'; + +export default async function BoardLayout({ + children, +}: { + children: React.ReactNode; +}) { + const accessToken = cookies().get('accessToken')?.value; + + if (!accessToken) { + redirect(ROUTES.LOGIN); + } + + return <>{children}; +} diff --git a/src/app/(team)/layout.tsx b/src/app/(team)/layout.tsx new file mode 100644 index 00000000..67ebf2d3 --- /dev/null +++ b/src/app/(team)/layout.tsx @@ -0,0 +1,17 @@ +import { cookies } from 'next/headers'; +import { redirect } from 'next/navigation'; +import { ROUTES } from '@/constants/routes'; + +export default async function TeamLayout({ + children, +}: { + children: React.ReactNode; +}) { + const accessToken = cookies().get('accessToken')?.value; + + if (!accessToken) { + redirect(ROUTES.LOGIN); + } + + return <>{children}; +} diff --git a/src/app/(user)/layout.tsx b/src/app/(user)/layout.tsx new file mode 100644 index 00000000..ae6ac2af --- /dev/null +++ b/src/app/(user)/layout.tsx @@ -0,0 +1,17 @@ +import { cookies } from 'next/headers'; +import { redirect } from 'next/navigation'; +import { ROUTES } from '@/constants/routes'; + +export default async function UserLayout({ + children, +}: { + children: React.ReactNode; +}) { + const accessToken = cookies().get('accessToken')?.value; + + if (!accessToken) { + redirect(ROUTES.LOGIN); + } + + return <>{children}; +} From c3035004f069c636961fb10dba5e65dfc72d6409 Mon Sep 17 00:00:00 2001 From: hyeonjiroh Date: Thu, 22 May 2025 13:44:22 +0900 Subject: [PATCH 2/3] =?UTF-8?q?design:=20=EB=B0=98=EC=9D=91=ED=98=95=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_components/LoginForm/OpenPasswordResetModal.tsx | 2 +- src/app/(auth)/login/_components/LoginForm/index.tsx | 4 ++-- .../(auth)/login/_components/NavigateToSignUp/index.tsx | 9 +++++++-- src/app/(auth)/login/_components/SocialLogin/index.tsx | 2 +- src/app/(auth)/login/page.tsx | 4 ++-- src/app/(auth)/signup/SignupForm.tsx | 6 +++--- src/app/(auth)/signup/page.tsx | 4 ++-- 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/app/(auth)/login/_components/LoginForm/OpenPasswordResetModal.tsx b/src/app/(auth)/login/_components/LoginForm/OpenPasswordResetModal.tsx index 1669e7a5..d2d547a4 100644 --- a/src/app/(auth)/login/_components/LoginForm/OpenPasswordResetModal.tsx +++ b/src/app/(auth)/login/_components/LoginForm/OpenPasswordResetModal.tsx @@ -63,7 +63,7 @@ export default function OpenPasswordResetModal({ ...props }) { return (