Files
profi-frontend/src/layouts/DashboardLayout.tsx

46 lines
2.5 KiB
TypeScript
Raw Normal View History

2025-06-02 18:11:15 +03:00
import { useUser } from "../utils/users/UseUser.ts"; // Хук для получения информации о пользователе
import { Outlet, Link, useNavigate } from "react-router-dom"; // Композиция для маршрутизации
import React, { useEffect } from "react";
import {UserContextType} from "../types/users.ts";
2025-06-02 17:34:08 +03:00
export function DashboardLayout() {
2025-06-02 18:11:15 +03:00
const { user, logout } = useUser() as UserContextType; // Получаем данные о пользователе
const navigate = useNavigate(); // Получаем функцию для навигации
2025-06-02 17:34:08 +03:00
2025-06-02 18:11:15 +03:00
// Проверяем, есть ли пользователь, если нет, редиректим на страницу логина
2025-06-02 17:34:08 +03:00
useEffect(() => {
if (!user) {
2025-06-02 18:11:15 +03:00
navigate("/login/");
2025-06-02 17:34:08 +03:00
}
}, [navigate, user]);
2025-06-02 18:11:15 +03:00
if (!user) {
return null; // Если пользователь не найден, ничего не отображаем
2025-06-02 17:34:08 +03:00
}
2025-06-02 18:11:15 +03:00
// Определяем класс для активной ссылки
const isActive = (path: string) => window.location.pathname.includes(path)? 'selected' : 'unselected';
2025-06-02 17:34:08 +03:00
return (
2025-06-02 18:11:15 +03:00
<div className="dashboard-layout">
<div className="sidebar">
2025-06-02 17:34:08 +03:00
<h1 className="logo">Pro-Fi</h1>
2025-06-02 18:11:15 +03:00
<p className="role">{user.roleTitle || "Роль не опознана"}</p> {/* Отображаем текущую роль пользователя */}
<nav className="navigation">
<Link to="/dashboard/staff" className={isActive('/dashboard/staff')}>Штат</Link>
<Link to="/dashboard/schools" className={isActive('/dashboard/schools')}>Школы</Link>
<Link to="/dashboard/events" className={isActive('/dashboard/events')}>Мероприятия</Link>
<Link to="/dashboard/students" className={isActive('/dashboard/students')}>Студенты</Link>
<Link to="/dashboard/reports" className={isActive('/dashboard/reports')}>Отчеты</Link>
<Link to="/dashboard/partners" className={isActive('/dashboard/partners')}>Партнеры</Link>
<Link to="/admin" className={isActive('/admin')}>Админ-панель</Link>
<button onClick={logout} className="logout">Выйти</button>
</nav>
2025-06-02 17:34:08 +03:00
</div>
<div className="content">
<Outlet />
</div>
2025-06-02 18:11:15 +03:00
</div>
2025-06-02 17:34:08 +03:00
);
}