create: admin.html, admin.js, help.html, index.html, info.html, info.js, login.html, main.js, style.css, auth.js, package.json, server.js, sqllite.js

This commit is contained in:
Калугин Олег Александрович
2026-04-12 19:05:12 +00:00
committed by GitVerse
parent 458b1fa927
commit 3fbf7311d8
13 changed files with 2018 additions and 0 deletions

49
auth.js Normal file
View File

@@ -0,0 +1,49 @@
const axios = require('axios');
async function authenticateWithLDAP(username, password) {
try {
const response = await axios.post(process.env.LDAP_AUTH_URL, {
username,
password
}, {
headers: { 'Content-Type': 'application/json' },
timeout: 5000
});
if (response.data && response.data.success === true) {
return {
success: true,
username: response.data.username,
full_name: response.data.full_name,
groups: response.data.groups || [],
description: response.data.description || ''
};
} else {
return { success: false, message: 'Неверные учетные данные' };
}
} catch (error) {
console.error('LDAP auth error:', error.message);
return { success: false, message: 'Ошибка соединения с сервером авторизации' };
}
}
function checkUserAccess(groups) {
const allowedGroups = process.env.ALLOWED_GROUPS ? process.env.ALLOWED_GROUPS.split(',') : [];
const tasksGroups = process.env.TASKS_GROUPS ? process.env.TASKS_GROUPS.split(',') : [];
const isAdmin = groups.some(group => allowedGroups.includes(group));
const isAllowed = groups.some(group => tasksGroups.includes(group));
if (isAdmin) {
return { allowed: true, role: 'admin' };
} else if (isAllowed) {
return { allowed: true, role: 'user' };
} else {
return { allowed: false, role: null, message: 'Доступ запрещён. Обратитесь к администрации.' };
}
}
module.exports = {
authenticateWithLDAP,
checkUserAccess
};