84 lines
2.1 KiB
JavaScript
Executable File
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');
|
|
});
|