Compare commits

..

No commits in common. "8a87c45fc3a28112e459d7be7d6dedf5396ce12c" and "0d15a82389c8814abec092deb940eacd6afe474f" have entirely different histories.

3 changed files with 45 additions and 75 deletions

View File

@ -6,38 +6,27 @@ import Dashboard from './pages/Dashboard';
import UserAccount from './pages/UserAccount'; // Импортируем компонент UserAccount
import Login from './pages/Login'; // Импортируем страницу логина
import Connections from './pages/Connections'; // Импортируем страницу подключений
import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
const App = () => {
const [isLoggedIn, setIsLoggedIn] = useState(false); // Статус авторизации
const [activeTab, setActiveTab] = useState('map'); // По умолчанию активная вкладка "Карта"
// Функция для выхода из системы
const handleLogout = () => {
setIsLoggedIn(false);
};
const [isAuthenticated, setIsAuthenticated] = useState(false); // Статус авторизации
const handleLogin = () => {
setIsLoggedIn(true); // Устанавливаем авторизацию
setIsAuthenticated(true); // Устанавливаем авторизацию
};
const handleLogout = () => {
setIsAuthenticated(false); // Сбрасываем авторизацию
};
if (!isAuthenticated) {
return <Login onLogin={handleLogin} />; // Показываем страницу логина
}
return (
<Router>
<Routes>
<Route
path="/login"
element={isLoggedIn ? <Navigate to="/app" /> : <Login onLogin={handleLogin} />}
/>
<Route
path="/app"
element={isLoggedIn ? (
<div style={{ display: 'flex', flexDirection: 'column', height: '100vh' }}>
<div style={{ display: 'flex', flex: 1 }}>
<Sidebar
onSelectTab={setActiveTab}
activeTab={activeTab}
onLogout={handleLogout} // Передаем функцию handleLogout через пропс onLogout
/>
<Sidebar onSelectTab={setActiveTab} activeTab={activeTab} onLogout={handleLogout} /> {/* Передаем onLogout */}
<div style={{ padding: '20px', flex: 1 }}>
{activeTab === 'map' && <Dashboard />} {/* Подключаем компонент Dashboard */}
{activeTab === 'connection' && <Connections />} {/* Страница подключений */}
@ -47,14 +36,6 @@ const App = () => {
</div>
</div>
</div>
) : (
<Navigate to="/login" />
)}
/>
{/* Перенаправляем на /login по умолчанию */}
<Route path="*" element={<Navigate to="/login" />} />
</Routes>
</Router>
);
};

View File

@ -17,6 +17,21 @@
padding: 0;
}
.sidebar li {
margin: 15px 0;
cursor: pointer;
}
.sidebar li:hover {
background-color: #34495e;
padding: 10px;
border-radius: 5px;
}
.sidebar ul {
list-style-type: none;
padding: 0;
}
.sidebar li {
margin: 15px 0;
cursor: pointer;
@ -33,26 +48,3 @@
background-color: #2980b9;
color: white;
}
/* Стили для кнопки "Выйти" */
.logout-button {
display: block;
margin-top: 20px;
padding: 10px;
width: 100%;
background-color: #e74c3c;
color: white;
border: none;
border-radius: 5px;
text-align: center;
cursor: pointer;
transition: background-color 0.3s;
}
.logout-button:hover {
background-color: #c0392b;
}
.logout-button:focus {
outline: none;
}

View File

@ -1,15 +1,12 @@
import React, { useState } from 'react';
import './Sidebar.css';
import React, { useState } from 'react'; // Ensure useState is imported
import './Sidebar.css'; // Change this to Sidebar.scss if using SCSS
const Sidebar = ({ onSelectTab, activeTab, onLogout }) => {
const [isSubMenuOpen, setIsSubMenuOpen] = useState(false);
const [isSubMenuOpen, setIsSubMenuOpen] = useState(false); // For managing dropdown items
const toggleSubMenu = () => {
setIsSubMenuOpen(!isSubMenuOpen);
// Переключение на вкладку "Аккаунт пользователя"
if (!isSubMenuOpen) {
onSelectTab('account');
}
onSelectTab('account'); // Keep the logic to display the account when clicking on "Аккаунт пользователя"
};
return (
@ -25,7 +22,7 @@ const Sidebar = ({ onSelectTab, activeTab, onLogout }) => {
<li className={activeTab === 'account' ? 'active' : ''} onClick={toggleSubMenu}>
Аккаунт пользователя
</li>
{isSubMenuOpen && (
{isSubMenuOpen && ( // Dropdown menu
<>
<li className={activeTab === 'groups' ? 'active' : ''} onClick={() => onSelectTab('groups')}>
Группы устройств
@ -35,10 +32,10 @@ const Sidebar = ({ onSelectTab, activeTab, onLogout }) => {
</li>
</>
)}
</ul>
<button className="logout-button" onClick={onLogout}>
<li className="logout" onClick={onLogout}>
Выйти
</button>
</li>
</ul>
</div>
);
};