Добавлена авторизация через хэш в функции send_welcome. Упрощена логика получения токена и регистрации пользователя.
This commit is contained in:
parent
9a3639b5ff
commit
9f215802a6
24
main.py
24
main.py
@ -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:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user