/** * 관리자 페이지 */ import { useEffect, useState } from 'react'; import { useNavigate, useLocation, Link } from 'react-router-dom'; import { useAuth } from '../contexts/AuthContext'; import { Shield, ArrowLeft, Settings, Server, Users, Loader2, User, Terminal, MessageSquare } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; export default function Admin({ isMobile = false }) { const { isLoggedIn, isAdmin, user, loading } = useAuth(); const navigate = useNavigate(); const location = useLocation(); const [toast, setToast] = useState(null); // 권한 확인 useEffect(() => { if (!loading) { if (!isLoggedIn) { navigate('/login', { state: { from: location.pathname } }); } else if (!isAdmin) { setToast('관리자 권한이 필요합니다.'); setTimeout(() => { navigate('/'); }, 1500); } } }, [isLoggedIn, isAdmin, loading, navigate, location.pathname]); // 토스트 자동 숨기기 useEffect(() => { if (toast) { const timer = setTimeout(() => setToast(null), 3000); return () => clearTimeout(timer); } }, [toast]); if (loading) { return (
); } if (!isLoggedIn || !isAdmin) { return ( <> {/* 토스트 알림 */} {toast && ( {toast} )}
); } return (
{/* 모바일용 헤더 */} {isMobile && (

관리자

서버 관리 및 설정

)}
{/* 데스크탑용 타이틀 */} {!isMobile && (

관리자 페이지

서버 관리 및 설정

)} {/* 관리자 정보 카드 */}

관리자 정보

닉네임

{user?.name || '-'}

이메일

{user?.email}

{/* 서버 관리 섹션 */}

서버 관리

{/* 서버 명령어 */}

서버 명령어

마인크래프트 서버에 명령어를 전송합니다.

추후 업데이트 예정
{/* 공지 전송 */}

공지 전송

게임 내 모든 플레이어에게 공지를 전송합니다.

추후 업데이트 예정
{/* 플레이어 관리 섹션 */}

플레이어 관리

접속 중인 플레이어 목록 및 관리 기능

추후 업데이트 예정
{/* 설정 섹션 */}

설정

대시보드 설정 및 구성 관리

추후 업데이트 예정
); }