diff --git a/backend/app.js b/backend/app.js index 01c5cdf..64c098d 100644 --- a/backend/app.js +++ b/backend/app.js @@ -37,23 +37,8 @@ app.use( }) ); -// Настройка сессии -app.use( - session({ - store: sessionMiddleware.store, - secret: process.env.SESSION_SECRET || 'hb3atoken', - name: 'sessionId', - resave: false, - saveUninitialized: true, - cookie: { - maxAge: 30 * 24 * 60 * 60 * 1000, - httpOnly: true, - secure: false, - sameSite: 'lax', - path: '/', - }, - }) -); +// Настройка сессии (ИСПОЛЬЗУЕМ ИМПОРТИРОВАННОЕ MIDDLEWARE) +app.use(sessionMiddleware); // Добавим middleware для проверки сессии app.use(async (req, res, next) => { diff --git a/backend/nodemon.json b/backend/nodemon.json index ab5c2f7..e493199 100644 --- a/backend/nodemon.json +++ b/backend/nodemon.json @@ -1,9 +1,10 @@ { "verbose": true, - "ignore": [".git", "node_modules/**/node_modules", "sessions", "data/vector_store"], - "watch": ["*.js", "routes/", "services/", "utils/", "middleware/"], + "ignore": [".git", "node_modules/**/node_modules", "sessions", "data/vector_store", "logs"], + "watch": ["*.js", "routes/**/*", "services/**/*", "utils/**/*", "middleware/**/*"], "env": { "NODE_ENV": "development" }, - "ext": "js,json,env" + "ext": "js,json,env", + "exec": "node server.js" } diff --git a/backend/routes/auth.js b/backend/routes/auth.js index c02718e..a4f7ceb 100644 --- a/backend/routes/auth.js +++ b/backend/routes/auth.js @@ -431,15 +431,25 @@ router.post('/email/verify-code', async (req, res) => { }); // Инициализация Telegram аутентификации -router.post('/telegram/init', requireAuth, async (req, res) => { +router.post('/telegram/init', async (req, res) => { try { - const { userId } = req.session; + // Инициализируем процесс аутентификации через Telegram, передавая сессию + // и получаем результат (код и ссылку на бота) + const result = await initTelegramAuth(req.session); - // Инициализируем процесс аутентификации через Telegram - await initTelegramAuth(userId); + // Логируем сессию перед сохранением + logger.info('[telegram/init] Session object before save:', req.session); - // Не возвращаем данные обратно, так как они отправляются ботом - res.json({ success: true, message: 'Проверьте вашего Telegram бота' }); + // Сохраняем сессию, чтобы guestId точно записался в базу данных + await sessionService.saveSession(req.session); + + // Возвращаем код и ссылку на бота на фронтенд + res.json({ + success: true, + message: 'Проверьте вашего Telegram бота', + verificationCode: result.verificationCode, + botLink: result.botLink, + }); } catch (error) { logger.error('Error initializing Telegram auth:', error); diff --git a/backend/services/session-service.js b/backend/services/session-service.js index 50979a4..d5962e8 100644 --- a/backend/services/session-service.js +++ b/backend/services/session-service.js @@ -13,6 +13,9 @@ class SessionService { */ async saveSession(session) { try { + // Логируем содержимое сессии перед сохранением + logger.info('[SessionService] Saving session data:', session); + return new Promise((resolve, reject) => { session.save((err) => { if (err) { diff --git a/backend/services/telegramBot.js b/backend/services/telegramBot.js index 2d53b73..a06250a 100644 --- a/backend/services/telegramBot.js +++ b/backend/services/telegramBot.js @@ -134,8 +134,11 @@ async function getBot() { } } + // Логируем guestId перед обновлением сессии + logger.info(`[telegramBot] Attempting to update session for guestId: ${providerId}`); + // Обновляем сессию в базе данных - await db.query( + const updateResult = await db.query( `UPDATE session SET sess = (sess::jsonb || $1::jsonb)::json WHERE sess::jsonb @> $2::jsonb`, @@ -145,11 +148,23 @@ async function getBot() { authenticated: true, authType: 'telegram', telegramId: ctx.from.id.toString(), + // Добавляем имя и юзернейм из Telegram + telegramUsername: ctx.from.username, + telegramFirstName: ctx.from.first_name, }), JSON.stringify({ guestId: providerId }), ] ); + // Логируем результат обновления сессии + if (updateResult.rowCount > 0) { + logger.info(`Session updated successfully for guestId: ${providerId}, userId: ${userId}`); + } else { + logger.warn( + `Session update failed: No session found or updated for guestId: ${providerId}. User ${userId} authenticated via Telegram, but web session might not reflect it.` + ); + } + // Отправляем сообщение об успешной аутентификации await ctx.reply('Аутентификация успешна! Можете вернуться в приложение.'); diff --git a/frontend/src/components/identity/TelegramConnect.vue b/frontend/src/components/identity/TelegramConnect.vue deleted file mode 100644 index f7481b8..0000000 --- a/frontend/src/components/identity/TelegramConnect.vue +++ /dev/null @@ -1,108 +0,0 @@ - - -