backTemplate/index.js
2025-05-11 15:25:40 +05:00

97 lines
2.4 KiB
JavaScript
Executable File

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');
});