Описание изменений

This commit is contained in:
2025-03-06 21:31:29 +03:00
parent d90e1b93a9
commit fc56362ac2
59 changed files with 6407 additions and 3709 deletions

View File

@@ -9,7 +9,7 @@ const { initializeVectorStore } = require('./services/vectorStore');
const session = require('express-session');
const { app, nonceStore } = require('./app');
const usersRouter = require('./routes/users');
const { router: authRouter } = require('./routes/auth');
const authRouter = require('./routes/auth');
const contractsRouter = require('./routes/contracts');
const accessRouter = require('./routes/access');
const path = require('path');
@@ -23,13 +23,14 @@ const fs = require('fs');
const pgSession = require('connect-pg-simple')(session);
const sessionStore = new pgSession({
pool: pool,
tableName: 'session',
tableName: 'sessions',
createTableIfMissing: true,
});
const helmet = require('helmet');
// const csrf = require('csurf');
// const cookieParser = require('cookie-parser');
const messagesRouter = require('./routes/messages');
const sessionMiddleware = require('./middleware/session');
// Импорт сервисов
const { initTelegramBot } = require('./services/telegram-service');
@@ -62,7 +63,7 @@ console.log('Ethers.js version:', ethers.version);
// 1. CORS должен быть первым
app.use(
cors({
origin: ['http://localhost:5173', 'http://127.0.0.1:5173'],
origin: ['http://127.0.0.1:5173', 'http://localhost:5173'],
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization', 'X-Auth-Nonce'],
@@ -76,50 +77,6 @@ app.use(helmet());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 3. Затем сессии
app.use(
session({
secret: process.env.SESSION_SECRET || 'your-secret-key',
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
secure: process.env.NODE_ENV === 'production', // В разработке можно установить false
sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax',
maxAge: 24 * 60 * 60 * 1000, // 1 день
},
store: new pgSession({
pool: pool,
tableName: 'session',
}),
})
);
// Добавьте после настройки сессий
app.use((req, res, next) => {
// console.log('Middleware для проверки сессии:', {
// url: req.url,
// method: req.method,
// sessionID: req.sessionID,
// session: req.session ? {
// isAuthenticated: req.session.isAuthenticated,
// authenticated: req.session.authenticated,
// address: req.session.address,
// isAdmin: req.session.isAdmin
// } : null,
// cookies: req.cookies,
// headers: {
// cookie: req.headers.cookie
// }
// });
if (req.session.store) {
req.session.store.on('error', (error) => {
console.error('Session store error:', error);
});
}
next();
});
// Добавьте после настройки парсеров
app.use((req, res, next) => {
// if (req.method === 'POST' && req.headers['content-type'] === 'application/json') {
@@ -215,6 +172,9 @@ app.use((req, res, next) => {
// next(err);
// });
// Использовать импортированный middleware для сессий
app.use(sessionMiddleware);
async function initServices() {
try {
console.log('Инициализация сервисов...');
@@ -285,7 +245,17 @@ app.post('/api/verify', async (req, res) => {
req.session.lastSignature = signature;
// Сохраняем сессию
req.session.save();
await new Promise((resolve, reject) => {
req.session.save((err) => {
if (err) {
console.error('Ошибка при сохранении сессии:', err);
reject(err);
} else {
console.log('Сессия успешно сохранена');
resolve();
}
});
});
} catch (error) {
return res.status(401).json({ success: false, error: error.message });
}
@@ -734,3 +704,11 @@ setTimeout(async () => {
console.error('Ошибка при первоначальной очистке сессий:', err);
}
}, 5 * 60 * 1000);
app.get('/session-debug', (req, res) => {
// Implementation of the endpoint
});
app.get('/check-sessions', async (req, res) => {
// Implementation of the endpoint
});