diff --git a/src/components/Board/PostForm.js b/src/components/Board/PostForm.js
new file mode 100644
index 0000000..52eab7e
--- /dev/null
+++ b/src/components/Board/PostForm.js
@@ -0,0 +1,98 @@
+// src/components/Board/PostForm.js
+import React, { useState } from "react";
+import { createPost } from "../../api/boardApi";
+
+const PostForm = ({ boardSlug, onClose, onCreated }) => {
+ const [form, setForm] = useState({
+ title: "",
+ content: "",
+ tags: "",
+ });
+
+ const handleChange = (e) => {
+ setForm({ ...form, [e.target.name]: e.target.value });
+ };
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+
+ if (!boardSlug) {
+ alert("⚠ 게시판이 선택되지 않았습니다.");
+ return;
+ }
+
+ const payload = {
+ title: form.title,
+ content: form.content,
+ tags: form.tags
+ .split(",")
+ .map((tag) => tag.trim())
+ .filter((tag) => tag !== ""),
+ };
+
+ console.log("✅ 요청 대상 boardSlug:", boardSlug);
+ console.log("✅ 전송할 payload:", payload);
+
+ try {
+ await createPost(boardSlug, payload);
+ alert("✅ 게시글이 등록되었습니다.");
+ setForm({ title: "", content: "", tags: "" });
+ onCreated();
+ onClose();
+ } catch (err) {
+ console.error("❌ 게시글 등록 실패", err);
+ console.log("🚨 서버 응답 내용:", err.response?.data);
+ alert("등록 실패: " + (err.response?.data?.detail || err.message));
+ }
+ };
+
+ return (
+
+ );
+};
+
+export default PostForm;
diff --git a/src/pages/BoardsPage copy.js b/src/pages/BoardsPage copy.js
new file mode 100644
index 0000000..e79331c
--- /dev/null
+++ b/src/pages/BoardsPage copy.js
@@ -0,0 +1,72 @@
+// src/pages/BoardsPage.js
+import React, { useState } from "react";
+import BoardList from "../components/Board/BoardList";
+import PostList from "../components/Board/PostList";
+import PostSearchPanel from "../components/Board/PostSearchPanel";
+import PostForm from "../components/Board/PostForm";
+
+const BoardsPage = () => {
+ const [selectedBoard, setSelectedBoard] = useState(null);
+ const [search, setSearch] = useState("");
+ const [tag, setTag] = useState("");
+ const [showForm, setShowForm] = useState(false);
+ const [refreshKey, setRefreshKey] = useState(0); // 게시글 새로고침 트리거
+
+ const handleCreated = () => setRefreshKey(prev => prev + 1);
+
+ return (
+
+ {/* 좌측: 게시판 리스트 */}
+
+ {
+ setSelectedBoard(slug);
+ setSearch("");
+ setTag("");
+ }}
+ />
+
+
+ {/* 중앙: 게시글 리스트 or 등록폼 */}
+
+ {selectedBoard && !showForm && (
+
+ setShowForm(true)}
+ >
+ ➕ 게시글 등록
+
+
+ )}
+
+ {showForm ? (
+
setShowForm(false)}
+ onCreated={handleCreated}
+ />
+ ) : (
+
+ )}
+
+
+ {/* 우측: 검색 + 태그 */}
+
+
+ );
+};
+
+export default BoardsPage;
diff --git a/src/pages/BoardsPage.js b/src/pages/BoardsPage.js
index 5ff64d6..816397a 100644
--- a/src/pages/BoardsPage.js
+++ b/src/pages/BoardsPage.js
@@ -3,41 +3,73 @@ import React, { useState } from "react";
import BoardList from "../components/Board/BoardList";
import PostList from "../components/Board/PostList";
import PostSearchPanel from "../components/Board/PostSearchPanel";
+import PostForm from "../components/Board/PostForm";
+import { useAuth } from "../context/AuthContext"; // ✅ 추가
const BoardsPage = () => {
const [selectedBoard, setSelectedBoard] = useState(null);
- const [searchQuery, setSearchQuery] = useState("");
- const [selectedTag, setSelectedTag] = useState("");
+ const [search, setSearch] = useState("");
+ const [tag, setTag] = useState("");
+ const [showForm, setShowForm] = useState(false);
+ const [refreshKey, setRefreshKey] = useState(0);
+ const { isLoggedIn } = useAuth(); // ✅ 로그인 여부 가져오기
+
+ const handleCreated = () => setRefreshKey((prev) => prev + 1);
return (
-
- {/* 좌측: 게시판 리스트 */}
-
+
+ {/* 좌측: 게시판 목록 */}
+
{
+ setSelectedBoard(slug);
+ setSearch("");
+ setTag("");
+ setShowForm(false);
+ }}
/>
-
+
- {/* 중앙: 게시글 리스트 */}
-
+ {/* 중앙: 게시글 리스트 또는 작성 폼 */}
+
+ {selectedBoard && !showForm && isLoggedIn && ( // ✅ 로그인 조건 추가
+
+ setShowForm(true)}
+ >
+ ➕ 게시글 등록
+
+
+ )}
- {/* 우측: 검색 + 태그 */}
-
+ {showForm ? (
+
setShowForm(false)}
+ onCreated={handleCreated}
+ />
+ ) : (
+
+ )}
+
+
+ {/* 우측: 검색 + 태그 필터 */}
+
+
);
};
-export default BoardsPage;
\ No newline at end of file
+export default BoardsPage;
diff --git a/src/pages/Board.js b/src/pages/_unused_Board.js
similarity index 100%
rename from src/pages/Board.js
rename to src/pages/_unused_Board.js
diff --git a/version b/version
index e484aaf..bc719c4 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-0.0.16
\ No newline at end of file
+0.0.17-rc1
\ No newline at end of file