'use client'; import React, { useState, useEffect } from 'react'; import Link from 'next/link'; import { usePathname, useRouter } from 'next/navigation'; import { Building, FileText, Settings, LogOut, Menu, X } from 'lucide-react'; import S3Status from './components/S3Status'; interface AdminLayoutProps { children: React.ReactNode; } export default function AdminLayout({ children }: AdminLayoutProps) { const [isAuthenticated, setIsAuthenticated] = useState(false); const [isLoading, setIsLoading] = useState(true); const [isSidebarOpen, setIsSidebarOpen] = useState(false); const pathname = usePathname(); const router = useRouter(); useEffect(() => { // Проверяем авторизацию const adminAuth = localStorage.getItem('adminAuth'); if (adminAuth) { setIsAuthenticated(true); } setIsLoading(false); }, []); const handleLogin = (username: string, password: string) => { // Простая проверка (в реальном проекте должна быть серверная авторизация) if (username === 'admin' && password === 'admin123') { localStorage.setItem('adminAuth', JSON.stringify({ username, role: 'admin' })); setIsAuthenticated(true); return true; } return false; }; const handleLogout = () => { localStorage.removeItem('adminAuth'); setIsAuthenticated(false); router.push('/admin'); }; const navigation = [ { name: 'Новости', href: '/admin/news', icon: FileText }, { name: 'Настройки', href: '/admin/settings', icon: Settings }, ]; if (isLoading) { return (
); } if (!isAuthenticated) { return ; } return (
{/* Мобильный overlay */} {isSidebarOpen && (
setIsSidebarOpen(false)} /> )} {/* Sidebar */}
CKE Admin
{/* Main content */}
{/* Top bar */}
A
Добро пожаловать, admin
{/* Page content */}
{children}
); } // Компонент формы входа function LoginForm({ onLogin }: { onLogin: (username: string, password: string) => boolean }) { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setError(''); if (!username || !password) { setError('Заполните все поля'); return; } const success = onLogin(username, password); if (!success) { setError('Неверный логин или пароль'); } }; return (

CKE Admin Panel

Войдите в систему управления

setUsername(e.target.value)} className="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent" placeholder="Введите логин" />
setPassword(e.target.value)} className="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent" placeholder="Введите пароль" />
{error && (
{error}
)}
); }