""" Глобальный реестр разрешений и фабричные функции """ from typing import Optional from .base import PermissionRegistry, PermissionChecker, Permission from services.infrastructure.database import DatabaseService from services.infrastructure.logger import get_logger logger = get_logger(__name__) # Глобальный реестр разрешений _permission_registry: Optional[PermissionRegistry] = None _permission_checker: Optional[PermissionChecker] = None def get_permission_registry() -> PermissionRegistry: """ Получение глобального реестра разрешений Returns: Глобальный экземпляр реестра разрешений """ global _permission_registry if _permission_registry is None: _permission_registry = PermissionRegistry() logger.info("Создан глобальный реестр разрешений") return _permission_registry def get_permission_checker() -> Optional[PermissionChecker]: """ Получение глобального проверщика разрешений Returns: Глобальный экземпляр проверщика разрешений или None если не инициализирован """ return _permission_checker def init_permission_checker(database: DatabaseService, config) -> PermissionChecker: """ Инициализация глобального проверщика разрешений Args: database: Сервис базы данных config: Конфигурация приложения Returns: Инициализированный проверщик разрешений """ global _permission_checker registry = get_permission_registry() _permission_checker = PermissionChecker(registry, database, config) logger.info("Инициализирован глобальный проверщик разрешений") return _permission_checker def register_permission(permission: Permission) -> None: """ Регистрация разрешения в глобальном реестре Args: permission: Разрешение для регистрации """ registry = get_permission_registry() registry.register(permission)