From 7e3460c355a592dd3647755b0683bc8e14446000 Mon Sep 17 00:00:00 2001 From: kalugin66 Date: Sun, 1 Feb 2026 23:08:33 +0500 Subject: [PATCH] 1=1 --- public/auth.js | 64 +++++++++++++++++++++++++++++++++++++++++++++++++- server.js | 7 +++++- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/public/auth.js b/public/auth.js index 6abd9c7..23d173d 100644 --- a/public/auth.js +++ b/public/auth.js @@ -29,8 +29,56 @@ function showMainInterface() { if (currentUser.auth_type === 'ldap') { userInfo += ` (LDAP)`; } + + // Показываем только группы, которые влияют на роль if (currentUser.groups && currentUser.groups.length > 0) { - userInfo += ` | Группы: ${currentUser.groups.join(', ')}`; + // Получаем все группы ролей из конфигурации + const roleGroups = []; + + // Администраторы + if (window.ALLOWED_GROUPS) { + roleGroups.push(...window.ALLOWED_GROUPS.split(',').map(g => g.trim())); + } + + // Секретари + if (window.SECRETARY_GROUPS) { + roleGroups.push(...window.SECRETARY_GROUPS.split(',').map(g => g.trim())); + } + + // Группа помощи + if (window.HELP_GROUPS) { + roleGroups.push(...window.HELP_GROUPS.split(',').map(g => g.trim())); + } + + // IT поддержка + if (window.ITHELP_GROUPS) { + roleGroups.push(...window.ITHELP_GROUPS.split(',').map(g => g.trim())); + } + + // Заявки + if (window.REQUEST_GROUPS) { + roleGroups.push(...window.REQUEST_GROUPS.split(',').map(g => g.trim())); + } + + // Задачи + if (window.TASKS_GROUPS) { + roleGroups.push(...window.TASKS_GROUPS.split(',').map(g => g.trim())); + } + + // Фильтруем группы пользователя, оставляя только те, что влияют на роль + const relevantGroups = currentUser.groups.filter(group => + roleGroups.includes(group) + ); + + // Также всегда показываем роль пользователя + if (currentUser.role) { + userInfo += ` | Роль: ${getRoleDisplayName(currentUser.role)}`; + } + + // Показываем группы только если есть релевантные + if (relevantGroups.length > 0) { + userInfo += ` | Группы ролей: ${relevantGroups.join(', ')}`; + } } document.getElementById('current-user').textContent = userInfo; @@ -57,6 +105,20 @@ function showMainInterface() { if (btn) btn.classList.remove('active'); } +// Вспомогательная функция для отображения понятного имени роли +function getRoleDisplayName(role) { + const roleNames = { + 'admin': 'Администратор', + 'secretary': 'Секретарь', + 'help': 'Помощь', + 'ithelp': 'IT поддержка', + 'request': 'Заявки', + 'tasks': 'Задачи', + 'teacher': 'Учитель' + }; + return roleNames[role] || role; +} + async function login(event) { event.preventDefault(); diff --git a/server.js b/server.js index db43ae5..5aa2da7 100644 --- a/server.js +++ b/server.js @@ -391,10 +391,12 @@ app.use((req, res, next) => { app.get('/api/users', requireAuth, (req, res) => { const search = req.query.search || ''; + console.log('📋 Запрос всех пользователей для выбора'); + let query = ` SELECT id, login, name, email, role, auth_type FROM users - WHERE role IN ('admin', 'teacher') + WHERE 1=1 `; const params = []; @@ -409,9 +411,12 @@ app.get('/api/users', requireAuth, (req, res) => { db.all(query, params, (err, rows) => { if (err) { + console.error('❌ Ошибка при запросе пользователей:', err); res.status(500).json({ error: err.message }); return; } + + console.log(`✅ Загружено ${rows.length} пользователей для выбора`); res.json(rows); }); });