diff --git a/src/components/auth/PrivateRoute.tsx b/src/components/auth/PrivateRoute.tsx
new file mode 100644
index 0000000..6d6b515
--- /dev/null
+++ b/src/components/auth/PrivateRoute.tsx
@@ -0,0 +1,14 @@
+import type { ReactNode } from 'react';
+import { Navigate } from 'react-router-dom';
+
+interface PrivateRouteProps {
+ children: ReactNode;
+}
+
+export const PrivateRoute = ({ children }: PrivateRouteProps) => {
+ // TODO: 현재 백엔드에서 로그인 응답을 sessionId로 제공하고 있어
+ // 임시로 session_id로 인증 체크 중. 추후 access_token으로 통일 예정
+ const token = localStorage.getItem('session_id');
+
+ return token ? <>{children}> : ;
+};
\ No newline at end of file
diff --git a/src/main.tsx b/src/main.tsx
index f0b22f2..46f8204 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -25,6 +25,7 @@ const queryClient = new QueryClient({
});
import { OnboardingPage } from "./pages/onboarding/OnboardingPage.tsx";
import { PostDetailPage } from "./pages/community/PostDetailPage.tsx";
+import { PrivateRoute } from "./components/auth/PrivateRoute.tsx";
async function enableMocking() {
if (import.meta.env.DEV) {
@@ -36,7 +37,11 @@ async function enableMocking() {
const router = createBrowserRouter([
{
path: "/",
- element: ,
+ element: (
+
+
+
+ ),
children: [
{
index: true,
@@ -62,20 +67,20 @@ const router = createBrowserRouter([
path: "community",
element: ,
},
- {
- path: "login",
- element: ,
- },
- {
- path: "onboarding",
- element: ,
- },
],
},
+ {
+ path: "/login",
+ element: ,
+ },
{
path: "/callback",
element: ,
},
+ {
+ path: "/onboarding",
+ element: ,
+ },
]);
enableMocking().then(() => {
diff --git a/src/pages/auth/LoginPage.tsx b/src/pages/auth/LoginPage.tsx
index 8a8db44..eec9be1 100644
--- a/src/pages/auth/LoginPage.tsx
+++ b/src/pages/auth/LoginPage.tsx
@@ -1,3 +1,4 @@
+import GlobalLayout from "@/components/layout/GlobalLayout";
import { Button } from "@/components/ui/button";
export function LoginPage() {
@@ -20,22 +21,23 @@ export function LoginPage() {
};
return (
-
-
-
- 우리 동네 개발자 커뮤니티
-
- CO-MEET
-
+
+
+
+
+ 우리 동네 개발자 커뮤니티
+
+ CO-MEET
+
-
-
-
+
+
+
-
-
-
+
+ Github 로그인
+
+
+
+
);
}
diff --git a/src/pages/onboarding/OnboardingPage.tsx b/src/pages/onboarding/OnboardingPage.tsx
index b747bc3..95d690d 100644
--- a/src/pages/onboarding/OnboardingPage.tsx
+++ b/src/pages/onboarding/OnboardingPage.tsx
@@ -4,6 +4,7 @@ import { OnboardingStep2 } from "@/pages/onboarding/__components/OnboardingStep2
import { OnboardingStep3 } from "@/pages/onboarding/__components/OnboardingStep3";
import { OnboardingStep4 } from "@/pages/onboarding/__components/OnboardingStep4";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
+import GlobalLayout from "@/components/layout/GlobalLayout";
export interface OnboardingData {
nickname?: string;
@@ -55,36 +56,38 @@ export function OnboardingPage() {
};
return (
-
- {step < TOTAL_STEPS && (
-
- )}
-
+
+
{step < TOTAL_STEPS && (
-
-
- {getStepTitle()}
-
-
+
)}
-
- {step === 1 && (
-
+
+ {step < TOTAL_STEPS && (
+
+
+ {getStepTitle()}
+
+
)}
- {step === 2 && (
-
- )}
- {step === 3 && (
-
- )}
- {step === 4 && }
-
-
-
+
+ {step === 1 && (
+
+ )}
+ {step === 2 && (
+
+ )}
+ {step === 3 && (
+
+ )}
+ {step === 4 && }
+
+
+
+
);
}