158 lines
5.8 KiB
JavaScript
158 lines
5.8 KiB
JavaScript
// Функция для проверки наличия указанной группы у текущего пользователя
|
||
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"
|
||
});
|
||
}
|
||
// Кнопка выхода
|
||
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 = `<i class="${button.icon}"></i> ${button.text}`;
|
||
navbar.appendChild(btn);
|
||
});
|
||
}
|
||
|
||
// Инициализация при загрузке страницы
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
// createNavigation();
|
||
|
||
// Если нужно обновлять навигацию при изменениях
|
||
// window.addEventListener('userRoleChanged', createNavigation);
|
||
}); |