diff --git a/src/App.js b/src/App.js
index 82c951b..6b14796 100644
--- a/src/App.js
+++ b/src/App.js
@@ -10,6 +10,7 @@ import PostCreate from "./pages/PostCreate";
import PostEdit from "./pages/PostEdit";
import PostCategory from "./pages/PostCategory";
import Login from "./pages/Login";
+import Profile from "./pages/Profile";
import { AuthProvider } from "./context/AuthContext";
function App() {
@@ -28,6 +29,7 @@ function App() {
} />
} />
} />
+ } />
diff --git a/src/components/Navbar.js b/src/components/Navbar.js
index 4100068..ff0b63b 100644
--- a/src/components/Navbar.js
+++ b/src/components/Navbar.js
@@ -1,12 +1,11 @@
import React from 'react';
import { Link, useNavigate } from 'react-router-dom';
-import { useAuth } from '../context/AuthContext'; // ✅ Context에서 로그인 상태 사용
+import { useAuth } from '../context/AuthContext';
const Navbar = () => {
const navigate = useNavigate();
const { isLoggedIn, logout } = useAuth();
- // ✅ 'board' → 'posts'로 변경
const menuItems = ['home', 'about', 'posts', 'paas', 'infra'];
return (
@@ -26,17 +25,27 @@ const Navbar = () => {
))}
- {isLoggedIn ? (
-
- ) : (
+ {isLoggedIn && (
+ <>
+
+ 내 정보
+
+
+ >
+ )}
+
+ {!isLoggedIn && (
+
회원정보 수정
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default EditForm;
diff --git a/src/pages/Profile/index.js b/src/pages/Profile/index.js
new file mode 100644
index 0000000..7a581e4
--- /dev/null
+++ b/src/pages/Profile/index.js
@@ -0,0 +1,58 @@
+import React, { useEffect, useState } from 'react';
+import { useNavigate } from 'react-router-dom';
+import EditForm from './EditForm';
+import authApi from '../../api/authApi';
+
+function ProfilePage() {
+ const navigate = useNavigate();
+
+ const [form, setForm] = useState({
+ name: '',
+ email: '',
+ desc: '' // ✅ desc 상태 추가
+ });
+
+ useEffect(() => {
+ const token = localStorage.getItem('access');
+ if (!token) {
+ navigate('/login');
+ return;
+ }
+
+ const fetchUser = async () => {
+ try {
+ const res = await authApi.get('/api/auth/me/');
+ const { name, email, desc } = res.data;
+ setForm({ name, email, desc }); // ✅ desc 상태 반영
+ } catch (err) {
+ console.error(err);
+ navigate('/login');
+ }
+ };
+
+ fetchUser();
+ }, [navigate]);
+
+ const handleChange = (e) => {
+ setForm({ ...form, [e.target.name]: e.target.value });
+ };
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ try {
+ await authApi.put('/api/auth/me/', form); // ✅ desc 포함해서 PUT
+ alert('회원정보가 수정되었습니다.');
+ } catch (err) {
+ console.error(err);
+ alert('수정 실패');
+ }
+ };
+
+ return (
+
+
+
+ );
+}
+
+export default ProfilePage;