This commit is contained in:
2026-02-01 23:08:33 +05:00
parent 3937377f94
commit 7e3460c355
2 changed files with 69 additions and 2 deletions

View File

@@ -29,8 +29,56 @@ function showMainInterface() {
if (currentUser.auth_type === 'ldap') { if (currentUser.auth_type === 'ldap') {
userInfo += ` (LDAP)`; userInfo += ` (LDAP)`;
} }
// Показываем только группы, которые влияют на роль
if (currentUser.groups && currentUser.groups.length > 0) { 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; document.getElementById('current-user').textContent = userInfo;
@@ -57,6 +105,20 @@ function showMainInterface() {
if (btn) btn.classList.remove('active'); 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) { async function login(event) {
event.preventDefault(); event.preventDefault();

View File

@@ -391,10 +391,12 @@ app.use((req, res, next) => {
app.get('/api/users', requireAuth, (req, res) => { app.get('/api/users', requireAuth, (req, res) => {
const search = req.query.search || ''; const search = req.query.search || '';
console.log('📋 Запрос всех пользователей для выбора');
let query = ` let query = `
SELECT id, login, name, email, role, auth_type SELECT id, login, name, email, role, auth_type
FROM users FROM users
WHERE role IN ('admin', 'teacher') WHERE 1=1
`; `;
const params = []; const params = [];
@@ -409,9 +411,12 @@ app.get('/api/users', requireAuth, (req, res) => {
db.all(query, params, (err, rows) => { db.all(query, params, (err, rows) => {
if (err) { if (err) {
console.error('❌ Ошибка при запросе пользователей:', err);
res.status(500).json({ error: err.message }); res.status(500).json({ error: err.message });
return; return;
} }
console.log(`✅ Загружено ${rows.length} пользователей для выбора`);
res.json(rows); res.json(rows);
}); });
}); });