diff --git a/app/ioc.py b/app/ioc.py index 60c21ce80..6803ca355 100644 --- a/app/ioc.py +++ b/app/ioc.py @@ -28,7 +28,9 @@ ) from ldap_protocol.identity import IdentityManager, MFAManager from ldap_protocol.kerberos import AbstractKadmin, get_kerberos_class +from ldap_protocol.kerberos.ldap_structure import KRBLDAPStructureManager from ldap_protocol.kerberos.service import KerberosService +from ldap_protocol.kerberos.template_render import KRBTemplateRenderer from ldap_protocol.ldap_schema.attribute_type_dao import AttributeTypeDAO from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO from ldap_protocol.ldap_schema.object_class_dao import ObjectClassDAO @@ -247,6 +249,16 @@ async def get_entity_type_dao( scope=Scope.REQUEST, ) + @provide(scope=Scope.REQUEST) + def get_krb_template_render( + self, + settings: Settings, + ) -> KRBTemplateRenderer: + """Provide KRBTemplateRenderer with settings.TEMPLATES.""" + return KRBTemplateRenderer(settings.TEMPLATES) + + krb_ldap_manager = provide(KRBLDAPStructureManager, scope=Scope.REQUEST) + class LDAPServerProvider(Provider): """Provider with session scope.""" diff --git a/app/ldap_protocol/kerberos/ldap_structure.py b/app/ldap_protocol/kerberos/ldap_structure.py index d1a8df4ef..5c928f885 100644 --- a/app/ldap_protocol/kerberos/ldap_structure.py +++ b/app/ldap_protocol/kerberos/ldap_structure.py @@ -18,11 +18,11 @@ from .base import AbstractKadmin -class LDAPStructureManager: +class KRBLDAPStructureManager: """Manager for Kerberos-related LDAP structure operations.""" def __init__(self, session: AsyncSession) -> None: - """Initialize LDAPStructureManager with a database session. + """Initialize KRBLDAPStructureManager with a database session. :param AsyncSession session: SQLAlchemy async session. :return None. diff --git a/app/ldap_protocol/kerberos/service.py b/app/ldap_protocol/kerberos/service.py index 3d39f4bbe..742d49020 100644 --- a/app/ldap_protocol/kerberos/service.py +++ b/app/ldap_protocol/kerberos/service.py @@ -26,9 +26,9 @@ from ldap_protocol.utils.queries import get_base_directories, get_dn_by_id from .base import AbstractKadmin, KerberosState, KRBAPIError -from .ldap_structure import LDAPStructureManager +from .ldap_structure import KRBLDAPStructureManager from .schemas import AddRequests, KDCContext, KerberosAdminDnGroup, TaskStruct -from .template_render import TemplateRenderer +from .template_render import KRBTemplateRenderer from .utils import get_krb_server_state, set_state @@ -40,6 +40,8 @@ def __init__( session: AsyncSession, settings: Settings, kadmin: AbstractKadmin, + krb_template_render: KRBTemplateRenderer, + krb_ldap_manager: KRBLDAPStructureManager, ) -> None: """Initialize KerberosService dependencies. @@ -47,13 +49,17 @@ def __init__( session (AsyncSession): SQLAlchemy async session. settings (Settings): App settings. kadmin (AbstractKadmin): Kerberos admin interface. + krb_template_render (KRBTemplateRenderer): + Template renderer for Kerberos (IoC-injected). + krb_ldap_manager (KRBLDAPStructureManager): + LDAP structure manager for Kerberos (IoC-injected). """ self._session = session self._settings = settings self._kadmin = kadmin - self._template_render = TemplateRenderer(settings.TEMPLATES) - self._ldap_manager = LDAPStructureManager(session) + self._template_render = krb_template_render + self._ldap_manager = krb_ldap_manager async def setup_krb_catalogue( self, diff --git a/app/ldap_protocol/kerberos/template_render.py b/app/ldap_protocol/kerberos/template_render.py index 46c0488ef..3a5aa5c85 100644 --- a/app/ldap_protocol/kerberos/template_render.py +++ b/app/ldap_protocol/kerberos/template_render.py @@ -9,7 +9,7 @@ from .schemas import KDCContext -class TemplateRenderer: +class KRBTemplateRenderer: """Renderer for Kerberos configuration templates. Handles asynchronous rendering of krb5 and kdc configuration files @@ -17,7 +17,7 @@ class TemplateRenderer: """ def __init__(self, templates: jinja2.Environment) -> None: - """Initialize TemplateRenderer with Jinja2 templates. + """Initialize KRBTemplateRenderer with Jinja2 templates. :param templates: Jinja2 environment or template loader. """ diff --git a/tests/conftest.py b/tests/conftest.py index 012335ef1..c9714e372 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -55,7 +55,9 @@ ) from ldap_protocol.identity import IdentityManager, MFAManager from ldap_protocol.kerberos import AbstractKadmin +from ldap_protocol.kerberos.ldap_structure import KRBLDAPStructureManager from ldap_protocol.kerberos.service import KerberosService +from ldap_protocol.kerberos.template_render import KRBTemplateRenderer from ldap_protocol.ldap_requests.bind import BindRequest from ldap_protocol.ldap_schema.attribute_type_dao import AttributeTypeDAO from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO @@ -331,6 +333,16 @@ async def get_session_storage( scope=Scope.REQUEST, ) + @provide(scope=Scope.REQUEST) + def get_krb_template_render( + self, + settings: Settings, + ) -> KRBTemplateRenderer: + """Provide KRBTemplateRenderer with settings.TEMPLATES.""" + return KRBTemplateRenderer(settings.TEMPLATES) + + krb_ldap_manager = provide(KRBLDAPStructureManager, scope=Scope.REQUEST) + @dataclass class TestCreds: