99 lines
4.5 KiB
Plaintext
99 lines
4.5 KiB
Plaintext
╔═══════════════════════════════════════════════════════════════════╗
|
||
║ ║
|
||
║ 🔧 TELEGRAM OAUTH ДЛЯ СТОРОННИХ КЛИЕНТОВ 🔧 ║
|
||
║ ║
|
||
╚═══════════════════════════════════════════════════════════════════╝
|
||
|
||
|
||
ИЗМЕНЕНИЯ:
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
✅ 1. Убран Mock User
|
||
• Удалена функция getMockUser()
|
||
• Убрано использование mock user из App.jsx
|
||
• Убрано из api.js interceptor
|
||
|
||
✅ 2. Добавлен Telegram Login Widget
|
||
• Компонент TelegramLogin.jsx
|
||
• Использует официальный Telegram Login Widget
|
||
• Показывается для сторонних клиентов и браузера
|
||
|
||
✅ 3. Backend OAuth Route
|
||
• /api/auth/oauth - новый endpoint
|
||
• Проверка подписи Telegram OAuth
|
||
• Создание/обновление пользователя
|
||
|
||
✅ 4. Обновлена логика авторизации
|
||
• Если нет Telegram Web App API → показывается Login Widget
|
||
• После авторизации через Widget → создается сессия
|
||
|
||
|
||
НАСТРОЙКА:
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
1. Получить имя бота от @BotFather
|
||
• Используется для Telegram Login Widget
|
||
|
||
2. Установить переменную окружения:
|
||
VITE_TELEGRAM_BOT_NAME=ваше_имя_бота
|
||
|
||
3. Настроить домен в BotFather:
|
||
• /setdomain для вашего домена
|
||
• Например: nakama.glpshchn.ru
|
||
|
||
|
||
ОБНОВЛЕНИЕ:
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Frontend:
|
||
• frontend/src/App.jsx
|
||
• frontend/src/components/TelegramLogin.jsx (новый)
|
||
• frontend/src/components/TelegramLogin.css (новый)
|
||
• frontend/src/utils/api.js
|
||
• frontend/src/utils/telegram.js
|
||
|
||
Backend:
|
||
• backend/routes/auth.js
|
||
|
||
|
||
КОМАНДЫ:
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
cd /Users/glpshchn/Desktop/nakama
|
||
|
||
# Frontend
|
||
scp frontend/src/App.jsx root@ваш_IP:/var/www/nakama/frontend/src/
|
||
scp frontend/src/components/TelegramLogin.jsx root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||
scp frontend/src/components/TelegramLogin.css root@ваш_IP:/var/www/nakama/frontend/src/components/
|
||
scp frontend/src/utils/api.js frontend/src/utils/telegram.js root@ваш_IP:/var/www/nakama/frontend/src/utils/
|
||
|
||
# Backend
|
||
scp backend/routes/auth.js root@ваш_IP:/var/www/nakama/backend/routes/
|
||
|
||
# На сервере
|
||
ssh root@ваш_IP "cd /var/www/nakama/frontend && npm run build"
|
||
ssh root@ваш_IP "pm2 restart nakama-backend"
|
||
|
||
|
||
ВАЖНО:
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
1. Telegram Login Widget требует:
|
||
• Домен должен быть настроен в BotFather
|
||
• Использовать HTTPS (в production)
|
||
• Правильное имя бота
|
||
|
||
2. Проверка подписи:
|
||
• Включена, если есть TELEGRAM_BOT_TOKEN
|
||
• В production рекомендуется строгая проверка
|
||
|
||
3. Безопасность:
|
||
• Теперь используется официальная авторизация Telegram
|
||
• Нет mock users
|
||
• Все пользователи верифицированы через Telegram
|
||
|
||
|
||
2 минуты
|
||
|
||
|