CampFireID/app/api/user.ts
2025-03-16 11:25:09 +03:00

49 lines
1.5 KiB
TypeScript

import { NextApiRequest, NextApiResponse } from 'next';
import { connectDB } from '../utils/db';
import User from '../models/User';
import { verifyTelegramWebAppData } from '../utils/telegram';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method !== 'GET') {
return res.status(405).json({ message: 'Method not allowed' });
}
try {
// Проверяем данные Telegram WebApp
const initData = req.headers['x-telegram-init-data'] as string;
if (!initData) {
return res.status(401).json({ message: 'Unauthorized' });
}
const telegramData = await verifyTelegramWebAppData(initData);
if (!telegramData) {
return res.status(401).json({ message: 'Invalid Telegram data' });
}
// Подключаемся к базе данных
await connectDB();
// Получаем или создаем пользователя
let user = await User.findOne({ telegramId: telegramData.user.id });
if (!user) {
user = await User.create({
telegramId: telegramData.user.id,
username: telegramData.user.username || `user${telegramData.user.id}`,
level: 1,
experience: 0,
balance: 1000, // Начальный баланс для новых пользователей
achievements: [],
inventory: [],
});
}
res.status(200).json(user);
} catch (error) {
console.error('Error in user API:', error);
res.status(500).json({ message: 'Internal server error' });
}
}