fix session middleware

This commit is contained in:
2025-09-25 22:37:54 +03:00
parent e8e2d3dc58
commit bbf2b1e6f9
3 changed files with 16 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
from .outer_middlewares import AccessCheckMiddleware
from .outer_middlewares import SessionMiddleware
__all__ = ["AccessCheckMiddleware"]
__all__ = ["SessionMiddleware"]

View File

@@ -1,29 +1,29 @@
import logging
from typing import Any, Awaitable, Callable, Dict
from aiogram import BaseMiddleware, Bot
from aiogram.types import TelegramObject
from database import async_session_, Worker
from sqlalchemy import select
from loguru import logger
from database import async_session_, Worker
class AccessCheckMiddleware(BaseMiddleware):
class SessionMiddleware(BaseMiddleware):
sessions_in_memory_db = set()
async def __call__(
self,
handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
event: TelegramObject,
data: Dict[str, Any]
) -> Any:
logger.info("Session check")
event_data = event.message or event.callback_query
user = event_data.from_user.id
if user not in self.sessions_in_memory_db:
async with async_session_() as session:
async with session.begin():
result = await session.execute(select(Worker).where(Worker.telegram_id == event_data.from_user.id))
user = result.scalars().first()
if user:
self.sessions_in_memory_db.add(event_data.from_user.id)
return await handler(event, data)
return None
result = await session.execute(select(Worker).where(Worker.telegram_id == event_data.from_user.id))
user_in_db = result.scalars().first()
if not user_in_db:
data["through_registration"] = True
else:
self.sessions_in_memory_db.add(user)
return await handler(event, data)