ваше сообщение коммита
This commit is contained in:
@@ -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) => {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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('Аутентификация успешна! Можете вернуться в приложение.');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user