// Функция для проверки наличия указанной группы у текущего пользователя function navbar_checkUserGroup(navbar_groupName) { try { // Проверяем, есть ли данные пользователя if (!currentUser || !currentUser.id) { console.error('Пользователь не аутентифицирован или данные отсутствуют'); return false; } console.log('Текущий пользователь:', currentUser.login || currentUser.name); const navbar_currentUserId = currentUser.id; // Делаем синхронный запрос с помощью XMLHttpRequest const xhr = new XMLHttpRequest(); xhr.open('GET', `/api2/idusers/user/${navbar_currentUserId}/groups`, false); // false = синхронный запрос xhr.send(); if (xhr.status !== 200) { console.error('Ошибка получения групп пользователя'); return false; } const navbar_groups = JSON.parse(xhr.responseText); // Проверяем наличие указанной группы const navbar_hasGroup = navbar_groups.some(userGroup => { return userGroup === navbar_groupName || userGroup.includes(navbar_groupName) || userGroup.toLowerCase().includes(navbar_groupName.toLowerCase()); }); if (navbar_hasGroup) { console.log(`✓ Пользователь состоит в группе "${navbar_groupName}"`); return true; } else { console.log(`✗ Пользователь НЕ состоит в группе "${navbar_groupName}"`); return false; } } catch (error) { console.error(`Ошибка при проверке группы "${navbar_groupName}":`, error); return false; } } // Функция для создания навигационной панели function createNavigation() { const navbar = document.getElementById('navbar-container'); if (!navbar) return; // 👇 ДОБАВЛЯЕМ ПОДРОБНЫЕ ЛОГИ 👇 if (currentUser) { //console.log('ID:', currentUser.id); //console.log('ФИО:', currentUser.name); //console.log('Логин:', currentUser.login); //console.log('Роль:', currentUser.role); } else { console.log('currentUser отсутствует (не авторизован)'); } // Базовые кнопки для всех авторизованных пользователей const navButtons = [ { onclick: "window.location.href = '/'", className: "nav-btn tasks", icon: "fas fa-cog", text: "Главная", id: "home-btn" }, ]; navButtons.push( { onclick: "showSection('tasks')", className: "nav-btn tasks", icon: "fas fa-list", text: "Все задачи", id: "tasks-btn" }, { onclick: "showSection('create-task')", className: "nav-btn create", icon: "fas fa-plus-circle", text: "Создать задачу", id: "create-task-btn" } ); navButtons.push( { onclick: "showKanbanSection()", className: "nav-btn kanban", icon: "fas fa-columns", text: "Канбан", id: "kanban-btn" }, { onclick: "showSection('profile')", className: "nav-btn profile", icon: "fas fa-user-circle", text: "Личный кабинет", id: "profile-btn" } ); if (currentUser && currentUser.role === 'admin') { navButtons.push({ onclick: "showSection('runtasks')", className: "nav-btn assigned-to-me", icon: "fas fa-user-check", text: "Мои задачи (Исполнитель)", id: "kanban-btn" }); } // 👇 Кнопка админ-панели ТОЛЬКО для admin 👇 if (currentUser && currentUser.role === 'admin') { navButtons.push({ onclick: "window.location.href = '/admin'", className: "nav-btn admin", icon: "fas fa-cog", text: "Админ-панель", id: "admin-btn" }); } // 👇 Кнопка админ-панели ТОЛЬКО для admin 👇 if (currentUser && currentUser.role === 'admin') { navButtons.push({ onclick: "window.location.href = '/admin-api-management.html'", className: "nav-btn profile", icon: "fas fa-cog", text: "api-management", id: "admin-btn" }); } // 👇 Кнопка админ-панели ТОЛЬКО для admin 👇 if (currentUser && currentUser.role === 'admin') { navButtons.push({ onclick: "window.location.href = '/client.html'", className: "nav-btn profile", icon: "fas fa-cog", text: "client", id: "admin-btn" }); } // Кнопка выхода navButtons.push({ onclick: "logout()", className: "btn-logout", icon: "fas fa-sign-out-alt", text: "Выйти", id: "logout-btn" }); // Очищаем и создаем кнопки navbar.innerHTML = ''; navButtons.forEach(button => { const btn = document.createElement('button'); btn.setAttribute('onclick', button.onclick); btn.className = button.className; btn.id = button.id; btn.innerHTML = ` ${button.text}`; navbar.appendChild(btn); }); } // Инициализация при загрузке страницы document.addEventListener('DOMContentLoaded', function() { // createNavigation(); // Если нужно обновлять навигацию при изменениях // window.addEventListener('userRoleChanged', createNavigation); });