🔒 Блокировка trial без Telegram ID

 Что сделано:
- app/page.tsx: Добавлена проверка tgUser?.id перед созданием trial
- app/plans/page.tsx: Добавлена валидация user?.id в createUser()
- app/api/create-user/route.ts: Серверная валидация telegramId (400 если отсутствует)
- types/telegram.ts: Расширен TelegramWebApp интерфейс (MainButton, BackButton, HapticFeedback)
- types/telegram.d.ts: Глобальная декларация Window.Telegram
- hooks/useTelegramWebApp.ts: Упрощено - использует (window as any)

 ПРОБЛЕМА (user_... имена):
Имена вида user_1770605873419 появляются когда Telegram WebApp не передает данные пользователя.
Теперь система блокирует создание trial/подписки если нет tgUser.id

 РЕШЕНИЕ:
Приложение должно быть открыто ВНУТРИ Telegram Mini App, а не в браузере!
Если пользователь видит user_..., значит открыто не через бота.
This commit is contained in:
Umbrix Dev
2026-02-09 06:38:35 +03:00
parent 088df817f3
commit 806b668a6d
6 changed files with 92 additions and 144 deletions

View File

@@ -187,12 +187,21 @@ export default function PlansNew() {
last_name: user.last_name,
} : null
});
// ⚠️ ВАЖНО: Если Telegram не передал user.id - блокируем создание
if (!user?.id) {
console.error('❌ USER CREATION BLOCKED: No Telegram user ID!');
alert('❌ Откройте приложение через Telegram бота\n\nПриложение должно быть открыто в Telegram Mini App, а не в браузере.');
setStep('plan');
setIsCreatingUser(false);
return;
}
const requestBody = {
planType,
period,
locationIds,
telegramId: user?.id || null,
telegramId: user.id, // Теперь 100% есть
telegramUsername: user?.username || null,
firstName: user?.first_name || null,
lastName: user?.last_name || null,