From 654fb514565f2cba3cdcdffda06c28fbae2b4157 Mon Sep 17 00:00:00 2001 From: Mina Choi Date: Thu, 1 Oct 2026 11:15:04 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20solution/frontend:=20=EC=B5=9C?= =?UTF-8?q?=EA=B3=A0=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=9D=B4=EC=83=81?= =?UTF-8?q?=EC=9D=80=20=EB=82=B4=20=EC=82=AC=EC=9D=B4=ED=8A=B8=20=EB=8D=94?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=EC=97=90=20=EB=AF=B8=EB=8B=88=EB=B8=94?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EA=B4=80=EB=A6=AC=20=E2=80=94=20=EC=9D=BC?= =?UTF-8?q?=EB=B0=98=20=EC=82=AC=EC=9E=A5=EB=8B=98=EC=97=90=EA=B2=8C?= =?UTF-8?q?=EB=8A=94=20=EC=88=A8=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 어제 더보기에서 미니블로그 관리를 통째로 뺐더니 최고관리자도 들어갈 길이 사이트관리 화면뿐이었다. - SitesPage: role >= OWNER 일 때만 더보기에 미니블로그 관리(/blog?placeId=) frontend tsc·eslint 통과 Co-Authored-By: Claude Opus 5.5 --- solution/frontend/src/pages/SitesPage.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/solution/frontend/src/pages/SitesPage.tsx b/solution/frontend/src/pages/SitesPage.tsx index 0e9a9e9..b2ad7ed 100644 --- a/solution/frontend/src/pages/SitesPage.tsx +++ b/solution/frontend/src/pages/SitesPage.tsx @@ -10,6 +10,7 @@ import { ExternalLink, Loader2, MoreHorizontal, + Newspaper, Pencil, Plus, Search, @@ -20,7 +21,7 @@ import { X, } from 'lucide-react'; import {PlaceCategory, publishUrlString, SiteStatus} from '@o2o/shared'; -import {changeStatus, PublishAction, useListMySites, type MySiteData} from '@/api'; +import {changeStatus, PublishAction, useListMySites, UserRole, type MySiteData} from '@/api'; import {AppShell, EmptyState, PageContainer} from '@/components/layout/AppShell'; import {Badge} from '@/components/ui/badge'; import {Button} from '@/components/ui/button'; @@ -28,6 +29,7 @@ import {Input} from '@/components/ui/input'; import {notify, notifyApiError} from '@/lib/notify'; import {PUBLISH_HOST} from '@/lib/site'; import {cn} from '@/lib/utils'; +import {useAuthStore} from '@/stores/auth'; // 발행본 주소는 PublishModal·CanvasView 와 같은 규칙이다 — 세 곳이 다른 주소를 말하면 안 된다. @@ -136,6 +138,7 @@ function SiteThumb({row, Icon}: {row: MySiteData; Icon: typeof Building2}) { /** 내 사이트 — 로그인한 사장님의 홈이다. */ export function SitesPage() { const navigate = useNavigate(); + const canManageBlog = (useAuthStore((s) => s.user?.role) ?? 0) >= UserRole.OWNER; const {data, isLoading, isError, error, refetch} = useListMySites({size: 50}); const [busyId, setBusyId] = useState(null); const [menuId, setMenuId] = useState(null); @@ -392,6 +395,19 @@ export function SitesPage() { 디자인·컨텐츠 관리 + {canManageBlog && ( + + )}