diff --git a/mnemo_cards_backend/lib/api/v2/auth_api_v2.dart b/mnemo_cards_backend/lib/api/v2/auth_api_v2.dart index 6e4e875..57e8be6 100644 --- a/mnemo_cards_backend/lib/api/v2/auth_api_v2.dart +++ b/mnemo_cards_backend/lib/api/v2/auth_api_v2.dart @@ -244,18 +244,18 @@ class AuthApiV2 { // Use the existing telegram utils to get user ID final telegramUtils = TelegramUtils(); - final userId = await telegramUtils.getUserId(initData); + final userData = await telegramUtils.getUserId(initData); - if (userId == null) { + if (userData == null) { return _badRequest('Invalid Telegram Web App data'); } // Find or create user based on telegram user ID - var user = await _userManager.findByTelegramId(userId); - if (user == null) { - // Create new user if doesn't exist - user = await _userManager.createFromTelegramData(userId, initData); - } + var (user, _) = await _userManager.createOrGetUser( + externalId: userData.id, + email: '', + name: userData.username, + ); // Generate tokens final tokens = await _jwtService.generateTokens(user); diff --git a/mnemo_cards_backend/lib/user/telegram.dart b/mnemo_cards_backend/lib/user/telegram.dart index 3a9608e..d026a2c 100644 --- a/mnemo_cards_backend/lib/user/telegram.dart +++ b/mnemo_cards_backend/lib/user/telegram.dart @@ -41,7 +41,7 @@ class TelegramUtils { } } - Future getUserId(String initialData) async { + Future<({String id, String? username})?> getUserId(String initialData) async { try { final tgWebAppData = Uri.decodeComponent(initialData); // Extract hash from the data @@ -64,7 +64,11 @@ class TelegramUtils { final userJson = Uri.decodeComponent(userMatch.group(1)!); final userData = jsonDecode(userJson) as Map; final userId = userData['id']?.toString(); - return userId; + final username = userData['username']?.toString(); + if (userId == null) { + return null; + } + return (id: userId, username: username); } catch (e) { return null; }