/** * 관리자 페이지 */ import { useEffect, useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import { useAuth } from '../contexts/AuthContext'; import { Shield, LogOut, Settings, Server, Users, Loader2 } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; export default function Admin() { const { isLoggedIn, isAdmin, user, loading, logout } = useAuth(); const navigate = useNavigate(); const location = useLocation(); const [toast, setToast] = useState(null); // 권한 확인 useEffect(() => { if (!loading) { if (!isLoggedIn) { // 로그인 후 다시 admin으로 돌아올 수 있도록 현재 경로 전달 navigate('/login', { state: { from: location.pathname } }); } else if (!isAdmin) { setToast('관리자 권한이 필요합니다.'); setTimeout(() => { navigate('/'); }, 1500); } } }, [isLoggedIn, isAdmin, loading, navigate, location.pathname]); const handleLogout = () => { logout(); navigate('/'); }; // 토스트 자동 숨기기 useEffect(() => { if (toast) { const timer = setTimeout(() => setToast(null), 3000); return () => clearTimeout(timer); } }, [toast]); if (loading) { return (
서버 관리 및 설정
{user?.name || '-'}
{user?.email}
마인크래프트 서버 상태 모니터링 및 관리
접속 중인 플레이어 목록 및 관리 기능
대시보드 설정 및 구성 관리