ваше сообщение коммита

This commit is contained in:
2025-09-02 17:18:15 +03:00
parent a6360ccd2e
commit 53bb269b85
26 changed files with 580 additions and 243 deletions

View File

@@ -45,14 +45,11 @@ const ensureDirectoriesExist = () => {
for (const dir of directories) {
if (!fs.existsSync(dir)) {
try {
logger.info(`Создание директории: ${dir}`);
fs.mkdirSync(dir, { recursive: true });
logger.info(`Директория успешно создана: ${dir}`);
} catch (error) {
logger.error(`Ошибка при создании директории ${dir}: ${error.message}`);
}
} else {
logger.info(`Директория существует: ${dir}`);
}
// Проверка прав на запись
@@ -60,7 +57,6 @@ const ensureDirectoriesExist = () => {
const testFile = path.join(dir, '.write-test');
fs.writeFileSync(testFile, 'test');
fs.unlinkSync(testFile);
logger.info(`Директория доступна для записи: ${dir}`);
} catch (error) {
logger.error(`Директория ${dir} недоступна для записи: ${error.message}`);
}
@@ -137,47 +133,19 @@ app.use(async (req, res, next) => {
const result = await db.getQuery()('SELECT sess FROM session WHERE sid = $1', [req.sessionID]);
// console.log('Session from DB:', result.rows[0]?.sess);
}
// Если сессия уже есть, используем её
if (req.session.authenticated) {
next();
return;
}
// Проверяем заголовок авторизации
const authHeader = req.headers.authorization;
if (authHeader && authHeader.startsWith('Bearer ')) {
const token = authHeader.split(' ')[1];
try {
// Находим пользователя по токену
const { rows } = await db.getQuery(
`
SELECT u.id,
(u.role = 'admin') as is_admin,
u.address
FROM users u
WHERE u.id = $1
`,
[token]
);
if (rows.length > 0) {
const user = rows[0];
req.session.userId = user.id;
req.session.address = user.address;
req.session.isAdmin = user.is_admin;
req.session.authenticated = true;
await new Promise((resolve) => req.session.save(resolve));
}
} catch (error) {
// console.error('Error checking auth header:', error);
}
}
next();
});
// Логирование запросов (только для отладки)
if (process.env.NODE_ENV === 'development') {
app.use((req, res, next) => {
// console.log('[APP] Глобальный лог:', req.method, req.originalUrl); // Убрано
// logger.info(`${req.method} ${req.url}`); // Убрано
next();
});
}
// Middleware для подстановки req.user из сессии
app.use((req, res, next) => {
if (req.session && req.session.userId) {
@@ -205,13 +173,6 @@ app.use(
})
);
// Логирование запросов
app.use((req, res, next) => {
// console.log('[APP] Глобальный лог:', req.method, req.originalUrl);
logger.info(`${req.method} ${req.url}`);
next();
});
// Маршруты API
app.use('/api/tables', tablesRoutes); // ДОЛЖНО БЫТЬ ВЫШЕ!
// app.use('/api', identitiesRoutes);
@@ -341,4 +302,20 @@ setInterval(
15 * 60 * 1000
); // Каждые 15 минут
// Инициализация сервиса настроек БД для динамического обновления подключений
const initializeDbSettingsService = async () => {
try {
const dbSettingsService = require('./services/dbSettingsService');
await dbSettingsService.initialize();
// logger.info('[App] Сервис настроек БД инициализирован'); // Убрано избыточное логирование
} catch (error) {
logger.error('[App] Ошибка инициализации сервиса настроек БД:', error);
}
};
// Инициализируем сервис настроек БД при запуске
if (process.env.NODE_ENV !== 'migration') {
initializeDbSettingsService();
}
module.exports = { app, nonceStore };