import { ThemeToggle } from "@/modules/theme-changer/ui/Theme.toggle";
import { useNavigate } from "react-router-dom";
import { useAuth } from "@/modules/auth/hooks/useAuth";
import { authService } from "@/modules/auth/api/auth.service";
import {
Shield,
Users,
Bot,
Activity,
LogOut,
ChevronRight,
Zap,
Lock,
Cloud,
TrendingUp,
Bell,
Server,
Sparkles,
AlertCircle,
CheckCircle,
Clock,
LogIn,
UserPlus,
} from "lucide-react";
export const HomePage = () => {
const navigate = useNavigate();
const { logout } = useAuth();
const isAuthenticated = authService.isAuthenticated();
const organization = authService.getCurrentOrganization();
const authStorage = localStorage.getItem("auth-storage");
const user = authStorage ? JSON.parse(authStorage).state?.user : null;
const stats = [
{ label: "Активные агенты", value: "12", change: "+2", icon: Server },
{ label: "Заблокировано IP", value: "1,284", change: "+128", icon: Shield },
{ label: "Активных правил", value: "47", change: "+5", icon: Lock },
{
label: "Атак предотвращено",
value: "3,721",
change: "+342",
icon: TrendingUp,
},
];
const recentActivities = [
{
id: 1,
type: "attack",
message: "Обнаружена brute-force атака с IP 192.168.1.45",
time: "2 минуты назад",
severity: "high",
},
{
id: 2,
type: "rule",
message: "Новое правило фильтрации добавлено администратором",
time: "15 минут назад",
severity: "info",
},
{
id: 3,
type: "agent",
message: "Агент на сервере web-01 успешно обновлен",
time: "1 час назад",
severity: "success",
},
{
id: 4,
type: "ai",
message: "AI предложил новые правила для обнаружения ботов",
time: "3 часа назад",
severity: "info",
},
];
const features = [
{
title: "Централизованное управление",
description: "Управляйте всеми IPS агентами из единого интерфейса",
icon: Server,
color: "#6366f1",
},
{
title: "AI Аналитика",
description: "Искусственный интеллект помогает находить сложные атаки",
icon: Bot,
color: "#8b5cf6",
},
{
title: "Мгновенная блокировка",
description: "Автоматическая блокировка IP при обнаружении угроз",
icon: Zap,
color: "#f59e0b",
},
{
title: "Безопасность данных",
description: "LLM не получает доступ к чувствительным логам",
icon: Lock,
color: "#22c55e",
},
];
const quickActions = isAuthenticated
? [
{
name: "IPS Агенты",
icon: Server,
path: "/agents",
description: "Управление агентами",
color: "#6366f1",
},
{
name: "Правила",
icon: Shield,
path: "/rules",
description: "Правила фильтрации",
color: "#22c55e",
},
{
name: "AI Аналитика",
icon: Bot,
path: "/ai-analytics",
description: "Анализ логов",
color: "#8b5cf6",
},
{
name: "Команда",
icon: Users,
path: "/organization",
description: "Управление доступом",
color: "#f59e0b",
},
]
: [];
const getSeverityStyles = (severity: string) => {
switch (severity) {
case "high":
return {
bg: "#ef444410",
border: "#ef4444",
icon: AlertCircle,
text: "#ef4444",
};
case "success":
return {
bg: "#22c55e10",
border: "#22c55e",
icon: CheckCircle,
text: "#22c55e",
};
default:
return {
bg: "#6366f110",
border: "#6366f1",
icon: Sparkles,
text: "#6366f1",
};
}
};
return (
{/* Header */}
{/* Logo */}
IPS Manager
{organization && (
{organization.name}
)}
{/* Right section */}
{isAuthenticated ? (
<>
{user?.first_name?.[0]}
{user?.last_name?.[0]}
{user?.first_name} {user?.last_name}
Администратор
>
) : (
<>
>
)}
{/* Hero Section */}
{isAuthenticated
? `Добро пожаловать, ${user?.first_name || "Администратор"}!`
: "Добро пожаловать в IPS Manager"}
{isAuthenticated
? "Система IPS мониторинга и защиты"
: "Современная платформа для централизованного управления IPS агентами"}
{!isAuthenticated && (
)}
{isAuthenticated && (
Все системы работают стабильно
)}
{/* Stats Grid - только для авторизованных */}
{isAuthenticated && (
{stats.map((stat, index) => {
const Icon = stat.icon;
return (
{stat.value}
{stat.label}
);
})}
)}
{/* Features Section - для всех */}
Ключевые возможности
Всё необходимое для защиты вашей инфраструктуры
{features.map((feature, index) => {
const Icon = feature.icon;
return (
{feature.title}
{feature.description}
);
})}
{isAuthenticated ? (
<>
{/* Quick Actions */}
Быстрый доступ
{quickActions.map((action, index) => {
const Icon = action.icon;
return (
);
})}
{/* Recent Activity */}
{recentActivities.map((activity) => {
const severityStyles = getSeverityStyles(activity.severity);
const Icon = severityStyles.icon;
return (
);
})}
{/* AI Insights */}
AI Аналитика
Новые предложения на основе анализа логов
🔍 Обнаружена аномалия
Повышенная активность с IP-адресов из диапазона
185.xxx.xx.xx
💡 Предложено правил
AI предлагает 3 новых правила для блокировки бот-сканеров
⚡ Оптимизация
Рекомендуется обновить 5 существующих правил для повышения
эффективности
>
) : (
/* CTA Section для неавторизованных */
Готовы начать?
Присоединяйтесь к IPS Manager и получите полный контроль над
безопасностью
)}
);
};