관리자 대시보드
fromis_9 팬사이트를 관리하세요
{item.label}
{item.description}
빠른 통계
-
총 앨범
-
총 사진
-
총 일정
5
멤버
import { useState, useEffect } from 'react'; import { useNavigate, Link } from 'react-router-dom'; import { motion } from 'framer-motion'; import { Disc3, Calendar, Users, LogOut, Home, ChevronRight } from 'lucide-react'; function AdminDashboard() { const navigate = useNavigate(); const [user, setUser] = useState(null); useEffect(() => { // 로그인 상태 확인 const token = localStorage.getItem('adminToken'); const userData = localStorage.getItem('adminUser'); if (!token || !userData) { navigate('/admin'); return; } setUser(JSON.parse(userData)); // 토큰 유효성 검증 fetch('/api/admin/verify', { headers: { Authorization: `Bearer ${token}` } }) .then(res => { if (!res.ok) throw new Error('Invalid token'); return res.json(); }) .catch(() => { localStorage.removeItem('adminToken'); localStorage.removeItem('adminUser'); navigate('/admin'); }); }, [navigate]); const handleLogout = () => { localStorage.removeItem('adminToken'); localStorage.removeItem('adminUser'); navigate('/admin'); }; // 메뉴 아이템 const menuItems = [ { icon: Users, label: '멤버 관리', description: '멤버 정보 및 프로필 관리', path: '/admin/members', color: 'bg-primary' }, { icon: Disc3, label: '앨범 관리', description: '앨범, 트랙, 사진 업로드 및 관리', path: '/admin/albums', color: 'bg-purple-500' }, { icon: Calendar, label: '일정 관리', description: '스케줄 추가 및 관리', path: '/admin/schedule', color: 'bg-blue-500' }, ]; return (
fromis_9 팬사이트를 관리하세요
{item.description}
-
총 앨범
-
총 사진
-
총 일정
5
멤버