import express from 'express'; import cors from 'cors'; import bodyParser from 'body-parser'; import {auth} from './routes/auth/auth.js'; import {checkSession} from './routes/auth/checkSession.js'; import {ping} from './routes/test/ping.js'; const authIgnorePaths = ['/ping']; const app = express(); // Middleware для проверки авторизации const checkAuth = async (req, res, next) => { if (authIgnorePaths.includes(req.path)) { // Если маршрут в списке, то не проверяем сессию return next(); } const authToken = req.headers.authorization; if (!authToken) { return res.status(401).json({error: 'Unauthorized'}); } const session = await checkSession(authToken); if (session) { return next(); } return res.status(401).json({error: 'Unauthorized'}); }; app.use(cors()); // разрешаем все источники app.use(bodyParser.json()); app.use(checkAuth); // Применяем middleware функцию для всех маршрутов // Проверка сессии app.get(['/ping'], async (req, res) => { try { const result = await ping(req); res.status(200).json(result); } catch (e) { console.log('Ошибка'); res.status(500).json({error: e}); } }); // Авторизация app.post(['/auth'], async (req, res) => { try { const result = await auth(req.body); if (result === 'Unauthorized') { res.status(401); } res.status(200).json(result); } catch (e) { console.log('Ошибка'); res.status(500).json({error: e}); } }); // Проверка сессии app.get(['/checkSession'], async (req, res) => { try { const authToken = req.headers.authorization ?? null; const result = await checkSession(authToken); res.status(200).json(result); } catch (e) { console.log('Ошибка'); res.status(500).json({error: e}); } }); // todo remove // Функция для проверки событий // async function runEvents() { // await Promise.all([ // suspiciousSearch(), // checkMaxConsumersCount() // ]) // } // интервал проверки событий // setInterval(runEvents, 180*1000); //180 секунд // Запуск сервера app.listen(3000, () => { console.log('Сервер запущен на порту 3000'); });