/**
* 관리자 페이지
*/
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 && (
)}
{/* 관리자 정보 카드 */}
{/* 서버 관리 섹션 */}
서버 관리
{/* 서버 명령어 */}
마인크래프트 서버에 명령어를 전송합니다.
추후 업데이트 예정
{/* 공지 전송 */}
게임 내 모든 플레이어에게 공지를 전송합니다.
추후 업데이트 예정
{/* 플레이어 관리 섹션 */}
플레이어 관리
접속 중인 플레이어 목록 및 관리 기능
추후 업데이트 예정
{/* 설정 섹션 */}
설정
대시보드 설정 및 구성 관리
추후 업데이트 예정
);
}