fix: упростить логику подтверждения выигрыша - проверка владельца счёта вместо токена
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
@@ -314,20 +314,6 @@ async def confirm_winner_callback(callback_query):
|
||||
winner_id = int(callback_query.data.split("_")[-1])
|
||||
|
||||
async with async_session_maker() as session:
|
||||
# Проверяем токен верификации
|
||||
verification = await WinnerNotificationService.verify_token(
|
||||
session,
|
||||
winner_id,
|
||||
callback_query.from_user.id
|
||||
)
|
||||
|
||||
if not verification:
|
||||
await callback_query.answer(
|
||||
"❌ Токен недействителен или истек срок действия (24 часа)",
|
||||
show_alert=True
|
||||
)
|
||||
return
|
||||
|
||||
# Получаем информацию о победителе
|
||||
winner_result = await session.execute(
|
||||
select(Winner).where(Winner.id == winner_id)
|
||||
@@ -345,6 +331,26 @@ async def confirm_winner_callback(callback_query):
|
||||
)
|
||||
return
|
||||
|
||||
# Проверяем, что пользователь является владельцем счёта
|
||||
if winner.account_number:
|
||||
owner = await AccountService.get_account_owner(session, winner.account_number)
|
||||
if not owner or owner.telegram_id != callback_query.from_user.id:
|
||||
await callback_query.answer(
|
||||
"❌ Вы не являетесь владельцем этого счёта",
|
||||
show_alert=True
|
||||
)
|
||||
return
|
||||
|
||||
# Проверяем срок действия (24 часа с момента создания winner)
|
||||
if winner.created_at:
|
||||
time_since_creation = datetime.now(timezone.utc) - winner.created_at
|
||||
if time_since_creation > timedelta(hours=24):
|
||||
await callback_query.answer(
|
||||
"❌ Срок подтверждения истёк (24 часа). Приз будет разыгран заново.",
|
||||
show_alert=True
|
||||
)
|
||||
return
|
||||
|
||||
# Подтверждаем выигрыш
|
||||
winner.is_confirmed = True
|
||||
winner.confirmed_at = datetime.now(timezone.utc)
|
||||
|
||||
Reference in New Issue
Block a user