backTemplate/index.js

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