Добавлена авторизация через хэш в функции send_welcome. Упрощена логика получения токена и регистрации пользователя.

This commit is contained in:
Redsandyg 2025-06-03 10:57:31 +03:00
parent 9a3639b5ff
commit 9f215802a6

24
main.py
View File

@ -9,6 +9,7 @@ import aiohttp
from aiogram.fsm.context import FSMContext from aiogram.fsm.context import FSMContext
from aiogram.fsm.storage.memory import MemoryStorage from aiogram.fsm.storage.memory import MemoryStorage
from aiogram.fsm.state import State, StatesGroup from aiogram.fsm.state import State, StatesGroup
from hashlib import sha256
load_dotenv() load_dotenv()
@ -116,24 +117,23 @@ async def send_welcome(message: types.Message):
login = message.from_user.username login = message.from_user.username
token = None token = None
error = None error = None
hash_value = sha256(f"{tg_id}sold".encode()).hexdigest()
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
# 1. Пробуем получить токен
try: try:
async with session.post(f'{API_URL}/token', json={'tg_id': tg_id}) as resp: # 1. Пробуем авторизоваться по hash
if resp.status == 200: async with session.post(f'{API_URL}/tg_auth', json={'hash': hash_value}) as auth_resp:
data = await resp.json() if auth_resp.status == 200:
token = data.get('access_token') token = hash_value
else: else:
# 2. Если не ок — регистрируем # 2. Если не найден — регистрируем
async with session.post(f'{API_URL}/register', json={'tg_id': tg_id, 'chat_id': chat_id, 'name': name, 'login': login}) as reg_resp: async with session.post(f'{API_URL}/register', json={'tg_id': tg_id, 'chat_id': chat_id, 'name': name, 'login': login}) as reg_resp:
if reg_resp.status == 200: if reg_resp.status == 200:
# 3. Пробуем снова получить токен # После регистрации снова пробуем авторизоваться
async with session.post(f'{API_URL}/token', json={'tg_id': tg_id}) as resp2: async with session.post(f'{API_URL}/tg_auth', json={'hash': hash_value}) as auth_resp2:
if resp2.status == 200: if auth_resp2.status == 200:
data = await resp2.json() token = hash_value
token = data.get('access_token')
else: else:
error = 'Ошибка авторизации (token после регистрации)' error = 'Ошибка авторизации после регистрации'
else: else:
error = 'Ошибка регистрации пользователя' error = 'Ошибка регистрации пользователя'
except Exception as e: except Exception as e: