Files
minicrm/public/navbar.js

149 lines
5.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Функция для проверки наличия указанной группы у текущего пользователя
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"
});
}
// Кнопка выхода
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);
});