From e3a363e3d9bdfd511004620222ad01d4926ae770 Mon Sep 17 00:00:00 2001 From: glpshchn <464976@niuitmo.ru> Date: Wed, 5 Nov 2025 01:02:23 +0300 Subject: [PATCH] Update files --- frontend/src/App.jsx | 26 +++- package.json | 6 +- ..._ИСПРАВЛЕНИЯ_СЕРВЕРА.txt | 136 ++++++++++++++++++ 3 files changed, 162 insertions(+), 6 deletions(-) create mode 100644 🔧_ИСПРАВЛЕНИЯ_СЕРВЕРА.txt diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index a798092..7959a53 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -31,22 +31,38 @@ function App() { // Инициализация Telegram Web App initTelegramApp() - // Получить данные пользователя из Telegram - const telegramUser = getTelegramUser() + // Проверить наличие Telegram Web App API + const tg = window.Telegram?.WebApp - // Если нет Telegram Web App API, показываем Login Widget - if (!telegramUser) { + // Если нет Telegram Web App API вообще, показываем Login Widget + if (!tg) { setShowLogin(true) setLoading(false) return } + + // Получить данные пользователя из Telegram + let telegramUser = getTelegramUser() + + // Если нет пользователя в initData, но есть WebApp API - дать время на инициализацию + if (!telegramUser) { + // Дать немного времени на инициализацию (Telegram Web App может загружаться асинхронно) + await new Promise(resolve => setTimeout(resolve, 200)) + telegramUser = getTelegramUser() + + // Если все еще нет пользователя, показываем Login Widget + if (!telegramUser) { + setShowLogin(true) + setLoading(false) + return + } + } // Верифицировать через API const userData = await verifyAuth() setUser(userData) // Обработать параметр start из Telegram (для открытия конкретного поста) - const tg = window.Telegram?.WebApp if (tg?.startParam) { // Если startParam начинается с "post_", это ссылка на пост if (tg.startParam.startsWith('post_')) { diff --git a/package.json b/package.json index 669a820..e96b48a 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,11 @@ "redis": "^4.6.11", "socket.io": "^4.6.0", "i18next": "^23.7.8", - "socket.io-client": "^4.6.0" + "socket.io-client": "^4.6.0", + "helmet": "^7.1.0", + "express-mongo-sanitize": "^2.2.0", + "xss-clean": "^0.1.4", + "hpp": "^0.2.3" }, "devDependencies": { "nodemon": "^3.0.1", diff --git a/🔧_ИСПРАВЛЕНИЯ_СЕРВЕРА.txt b/🔧_ИСПРАВЛЕНИЯ_СЕРВЕРА.txt new file mode 100644 index 0000000..b17bf8d --- /dev/null +++ b/🔧_ИСПРАВЛЕНИЯ_СЕРВЕРА.txt @@ -0,0 +1,136 @@ +╔═══════════════════════════════════════════════════════════════════╗ +║ ║ +║ 🔧 ИСПРАВЛЕНИЯ ДЛЯ СЕРВЕРА 🔧 ║ +║ ║ +╚═══════════════════════════════════════════════════════════════════╝ + + +ИСПРАВЛЕНО: +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +✅ 1. Добавлены недостающие зависимости в package.json + • helmet: ^7.1.0 + • express-mongo-sanitize: ^2.2.0 + • xss-clean: ^0.1.4 + • hpp: ^0.2.3 + +✅ 2. Исправлена логика авторизации в App.jsx + • Проверка наличия window.Telegram?.WebApp перед проверкой пользователя + • Добавлена задержка на инициализацию Telegram Web App (200ms) + • Правильная обработка официального клиента Telegram + + +КОМАНДЫ ДЛЯ ОБНОВЛЕНИЯ НА СЕРВЕРЕ: +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +# 1. Подключиться к серверу +ssh root@nakama.glpshchn.ru + +# 2. Остановить приложение (чтобы избежать постоянных ребутов) +pm2 stop nakama-backend + +# 3. Перейти в директорию проекта +cd /var/www/nakama + +# 4. Обновить код (если используете Git) +git pull origin main + +# 5. Установить недостающие зависимости +npm install helmet express-mongo-sanitize xss-clean hpp --save + +# Или установить все зависимости заново +npm install --production + +# 6. Проверить что зависимости установлены +npm list helmet express-mongo-sanitize xss-clean hpp + +# 7. Пересобрать frontend (с исправленной логикой авторизации) +cd frontend +npm run build +cd .. + +# 8. Проверить что сервер запускается (вручную) +cd backend +node server.js +# Если есть ошибки - исправить их +# Если все ок - остановить (Ctrl+C) + +# 9. Запустить через PM2 +pm2 start backend/server.js --name nakama-backend --update-env + +# Или если уже есть конфиг: +pm2 restart nakama-backend --update-env + +# 10. Проверить статус +pm2 status +pm2 logs nakama-backend --lines 50 + + +БЫСТРАЯ КОМАНДА (одна строка): +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +ssh root@nakama.glpshchn.ru "cd /var/www/nakama && pm2 stop nakama-backend && npm install helmet express-mongo-sanitize xss-clean hpp --save && cd frontend && npm run build && cd .. && pm2 start backend/server.js --name nakama-backend --update-env && sleep 2 && pm2 status && pm2 logs nakama-backend --lines 30" + + +ПРОВЕРКА ПОСЛЕ ОБНОВЛЕНИЯ: +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +# 1. Проверить что приложение запущено +pm2 status +# Должно быть: nakama-backend | online + +# 2. Проверить логи (не должно быть ошибок MODULE_NOT_FOUND) +pm2 logs nakama-backend --lines 50 +# Не должно быть: Error: Cannot find module 'helmet' + +# 3. Проверить health endpoint +curl http://localhost:3000/health +# Должно вернуть: {"status":"ok","environment":"production",...} + +# 4. Проверить через браузер +curl https://nakama.glpshchn.ru/health +# Должно вернуть: {"status":"ok",...} + +# 5. Проверить Nginx +sudo systemctl status nginx +sudo nginx -t + +# 6. Проверить логи Nginx +sudo tail -f /var/log/nginx/error.log +# Не должно быть 502 ошибок + + +ЧТО ИСПРАВЛЕНО: +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +✅ Проблема 1: Error: Cannot find module 'helmet' + РЕШЕНИЕ: Добавлены зависимости в package.json + +✅ Проблема 2: Даже с офф клиента Telegram просит авторизацию + РЕШЕНИЕ: Исправлена логика в App.jsx - теперь правильно проверяет + наличие Telegram Web App API и дает время на инициализацию + +✅ Проблема 3: 502 ошибка и постоянные ребуты + РЕШЕНИЕ: После установки зависимостей приложение должно запускаться + без ошибок и перестать ребутиться + + +ВАЖНО: +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +1. После установки зависимостей ОБЯЗАТЕЛЬНО пересобрать frontend + (npm run build в директории frontend) + +2. Перезапустить PM2 с флагом --update-env для обновления переменных + +3. Проверить логи PM2 после перезапуска + +4. Если все еще есть ошибки - проверить что все зависимости установлены: + npm list helmet express-mongo-sanitize xss-clean hpp + + +ГОТОВО! ✅ +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +После выполнения этих команд все три проблемы должны быть решены! +