67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
"""
|
|
Глобальный реестр разрешений и фабричные функции
|
|
"""
|
|
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)
|