backTemplate/index.js
2025-05-11 14:48:27 +05:00

84 lines
2.1 KiB
JavaScript
Executable File

const express = require('express');
const cors = require("cors");
const bodyParser = require('body-parser');
const auth = require("./routes/auth/auth");
const checkSession = require("./routes/auth/checkSession");
const authIgnorePaths = ['auth']
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); //todo Применяем middleware функцию для всех маршрутов
// Авторизация
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');
});