add register

This commit is contained in:
Yuriy Yuriev
2026-05-14 18:23:50 +07:00
parent 7802bd3410
commit 328f510151
9 changed files with 312 additions and 233 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
from .manager import AuthManager
from .manager import AuthManager, ADMIN_PASSWORD
from .storage import AuthStorage
__all__ = ["AuthManager", "AuthStorage"]
__all__ = ["AuthManager", "AuthStorage", "ADMIN_PASSWORD"]
+12 -4
View File
@@ -7,15 +7,18 @@ from typing import Dict, Optional
logger = logging.getLogger(__name__)
ADMIN_PASSWORD = "NjduqrKozu#G"
class AuthManager:
"""Управляет авторизацией: хеширование паролей, сессии, верификация."""
"""Управляет авторизацией: хеширование паролей, сессии, верификация, роли."""
def __init__(self, session_timeout_minutes: int = 120):
self._sessions: Dict[int, datetime] = {}
self._roles: Dict[int, str] = {} # user_id -> "admin" or "user"
self._failed_attempts: Dict[int, list] = {}
self._max_attempts = 5
self._lockout_duration = 300 # 5 минут блокировки
self._lockout_duration = 300
self._session_timeout = timedelta(minutes=session_timeout_minutes)
@staticmethod
@@ -37,13 +40,18 @@ class AuthManager:
return False
return True
def login(self, user_id: int):
def is_admin(self, user_id: int) -> bool:
return self._roles.get(user_id) == "admin"
def login(self, user_id: int, is_admin: bool = False):
self._sessions[user_id] = datetime.now()
self._roles[user_id] = "admin" if is_admin else "user"
self._failed_attempts.pop(user_id, None)
logger.info(f"User {user_id} logged in")
logger.info(f"User {user_id} logged in as {self._roles[user_id]}")
def logout(self, user_id: int):
self._sessions.pop(user_id, None)
self._roles.pop(user_id, None)
self._failed_attempts.pop(user_id, None)
logger.info(f"User {user_id} logged out")