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