From 91ebab0b9628f00d7d3c193c4d9c1a69c9a349e8 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:27:46 +0300 Subject: [PATCH 01/27] refactor: import paths to use 'infrasture.pg' instead of 'repo.pg' --- app/alembic/env.py | 2 +- app/alembic/versions/01f3f05a5b11_add_primary_group_id.py | 2 +- app/alembic/versions/05ddc0bd562a_add_roles.py | 2 +- app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py | 2 +- app/alembic/versions/275222846605_initial_ldap_schema.py | 2 +- app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py | 2 +- app/alembic/versions/4798b12b97aa_dedicated_servers.py | 2 +- app/alembic/versions/4e8772277cfe_add_web_permissions.py | 2 +- .../6303f5c706ec_update_krbadmin_useraccountcontrol_.py | 2 +- app/alembic/versions/6c858cc05da7_add_default_admin_name.py | 2 +- app/alembic/versions/71e642808369_add_directory_is_system.py | 2 +- app/alembic/versions/8164b4a9e1f1_add_ou_computers.py | 2 +- app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py | 2 +- app/alembic/versions/ba78cef9700a_initial_entity_type.py | 2 +- app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py | 2 +- app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py | 2 +- app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py | 2 +- app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py | 2 +- app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py | 2 +- app/alembic/versions/f1abf7ef2443_add_container_object_class.py | 2 +- app/alembic/versions/f24ed0e49df2_add_filter_anr.py | 2 +- app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py | 2 +- app/alembic/versions/fafc3d0b11ec_.py | 2 +- app/extra/scripts/uac_sync.py | 2 +- app/{repo => infrasture}/__init__.py | 0 app/{repo => infrasture}/pg/__init__.py | 0 app/{repo => infrasture}/pg/master_gateway.py | 0 app/{repo => infrasture}/pg/tables.py | 2 +- app/{repo => infrasture}/pg/types.py | 0 app/ioc.py | 2 +- app/ldap_protocol/auth/mfa_manager.py | 2 +- app/ldap_protocol/auth/setup_gateway.py | 2 +- app/ldap_protocol/dhcp/dhcp_manager_repository.py | 2 +- app/ldap_protocol/dns/dns_gateway.py | 2 +- app/ldap_protocol/filter_interpreter.py | 2 +- app/ldap_protocol/identity/provider_gateway.py | 2 +- app/ldap_protocol/kerberos/ldap_structure.py | 2 +- app/ldap_protocol/kerberos/utils.py | 2 +- app/ldap_protocol/ldap_requests/delete.py | 2 +- app/ldap_protocol/ldap_requests/modify.py | 2 +- app/ldap_protocol/ldap_requests/modify_dn.py | 2 +- app/ldap_protocol/ldap_requests/search.py | 2 +- app/ldap_protocol/ldap_schema/attribute_type_dao.py | 2 +- app/ldap_protocol/ldap_schema/entity_type_dao.py | 2 +- app/ldap_protocol/ldap_schema/object_class_dao.py | 2 +- app/ldap_protocol/multifactor.py | 2 +- app/ldap_protocol/policies/audit/events/handler.py | 2 +- app/ldap_protocol/policies/network/gateway.py | 2 +- app/ldap_protocol/policies/network/validator_gateway.py | 2 +- app/ldap_protocol/policies/password/ban_word_repository.py | 2 +- app/ldap_protocol/policies/password/dao.py | 2 +- app/ldap_protocol/roles/access_manager.py | 2 +- app/ldap_protocol/roles/ace_dao.py | 2 +- app/ldap_protocol/roles/role_dao.py | 2 +- app/ldap_protocol/roles/role_use_case.py | 2 +- app/ldap_protocol/utils/cte.py | 2 +- app/ldap_protocol/utils/queries.py | 2 +- app/ldap_protocol/utils/raw_definition_parser.py | 2 +- 58 files changed, 54 insertions(+), 54 deletions(-) rename app/{repo => infrasture}/__init__.py (100%) rename app/{repo => infrasture}/pg/__init__.py (100%) rename app/{repo => infrasture}/pg/master_gateway.py (100%) rename app/{repo => infrasture}/pg/tables.py (99%) rename app/{repo => infrasture}/pg/types.py (100%) diff --git a/app/alembic/env.py b/app/alembic/env.py index 6c08a67bd..6514ef5cc 100644 --- a/app/alembic/env.py +++ b/app/alembic/env.py @@ -16,7 +16,7 @@ MFAProvider, MigrationProvider, ) -from repo.pg.tables import metadata +from infrasture.pg.tables import metadata # this is the Alembic Config object, which provides # access to the values within the .ini file in use. diff --git a/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py index 73be02c1d..2fb64a406 100644 --- a/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py +++ b/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py @@ -29,7 +29,7 @@ get_filter_from_path, get_search_path, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "01f3f05a5b11" diff --git a/app/alembic/versions/05ddc0bd562a_add_roles.py b/app/alembic/versions/05ddc0bd562a_add_roles.py index aff773460..afe43802c 100644 --- a/app/alembic/versions/05ddc0bd562a_add_roles.py +++ b/app/alembic/versions/05ddc0bd562a_add_roles.py @@ -15,7 +15,7 @@ from extra.alembic_utils import temporary_stub_column from ldap_protocol.roles.role_use_case import RoleUseCase from ldap_protocol.utils.queries import get_base_directories -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "05ddc0bd562a" diff --git a/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py b/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py index 3cfbca4a2..14404b9e7 100644 --- a/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py +++ b/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py @@ -16,7 +16,7 @@ from constants import READ_ONLY_GROUP_NAME from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "16a9fa2c1f1e" diff --git a/app/alembic/versions/275222846605_initial_ldap_schema.py b/app/alembic/versions/275222846605_initial_ldap_schema.py index 226c9270b..e26c29948 100644 --- a/app/alembic/versions/275222846605_initial_ldap_schema.py +++ b/app/alembic/versions/275222846605_initial_ldap_schema.py @@ -23,7 +23,7 @@ from ldap_protocol.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "275222846605" diff --git a/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py b/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py index 6d88c6d0f..b07eae0ae 100644 --- a/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py +++ b/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py @@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from entities import Attribute, Directory -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "379fce54fb08" diff --git a/app/alembic/versions/4798b12b97aa_dedicated_servers.py b/app/alembic/versions/4798b12b97aa_dedicated_servers.py index ae625df78..34cd98d2c 100644 --- a/app/alembic/versions/4798b12b97aa_dedicated_servers.py +++ b/app/alembic/versions/4798b12b97aa_dedicated_servers.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import Session from entities import CatalogueSetting, DedicatedServer -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "4798b12b97aa" diff --git a/app/alembic/versions/4e8772277cfe_add_web_permissions.py b/app/alembic/versions/4e8772277cfe_add_web_permissions.py index 8567f40e5..e4902e70e 100644 --- a/app/alembic/versions/4e8772277cfe_add_web_permissions.py +++ b/app/alembic/versions/4e8772277cfe_add_web_permissions.py @@ -13,7 +13,7 @@ from entities import Role from enums import AuthorizationRules, RoleConstants -from repo.pg.types import AuthorizationRulesType +from infrasture.pg.types import AuthorizationRulesType # revision identifiers, used by Alembic. revision: None | str = "4e8772277cfe" diff --git a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index 6d101e95a..dff38cc29 100644 --- a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -17,7 +17,7 @@ from extra.alembic_utils import temporary_stub_column from ldap_protocol.objects import UserAccountControlFlag from ldap_protocol.utils.helpers import create_integer_hash -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "6303f5c706ec" diff --git a/app/alembic/versions/6c858cc05da7_add_default_admin_name.py b/app/alembic/versions/6c858cc05da7_add_default_admin_name.py index 7b1a59f1e..1e3837c18 100644 --- a/app/alembic/versions/6c858cc05da7_add_default_admin_name.py +++ b/app/alembic/versions/6c858cc05da7_add_default_admin_name.py @@ -13,7 +13,7 @@ from entities import Attribute, User from extra.alembic_utils import temporary_stub_column -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "6c858cc05da7" diff --git a/app/alembic/versions/71e642808369_add_directory_is_system.py b/app/alembic/versions/71e642808369_add_directory_is_system.py index 398d6f6df..3da2e1805 100644 --- a/app/alembic/versions/71e642808369_add_directory_is_system.py +++ b/app/alembic/versions/71e642808369_add_directory_is_system.py @@ -21,7 +21,7 @@ ) from entities import Directory from ldap_protocol.utils.queries import get_base_directories -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "71e642808369" diff --git a/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py index a4eb7297c..67ac89487 100644 --- a/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py +++ b/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py @@ -16,7 +16,7 @@ from extra.alembic_utils import temporary_stub_column from ldap_protocol.roles.role_use_case import RoleUseCase from ldap_protocol.utils.queries import get_base_directories -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "8164b4a9e1f1" diff --git a/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py b/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py index e8d480d94..bf5919c86 100644 --- a/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py +++ b/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from entities import Attribute, Directory -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "a1b2c3d4e5f6" diff --git a/app/alembic/versions/ba78cef9700a_initial_entity_type.py b/app/alembic/versions/ba78cef9700a_initial_entity_type.py index 0e6744919..9168ea7fd 100644 --- a/app/alembic/versions/ba78cef9700a_initial_entity_type.py +++ b/app/alembic/versions/ba78cef9700a_initial_entity_type.py @@ -20,7 +20,7 @@ from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase from ldap_protocol.utils.queries import get_base_directories -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "ba78cef9700a" diff --git a/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py b/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py index 88eaf4581..edb4825c8 100644 --- a/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py +++ b/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py @@ -13,7 +13,7 @@ from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "bf435bbd95ff" diff --git a/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py b/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py index dfaa36aa0..ee818ef73 100644 --- a/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py +++ b/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py @@ -13,7 +13,7 @@ from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "bv546ccd35fa" diff --git a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index dbaa321be..24af36276 100644 --- a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -17,7 +17,7 @@ from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO from ldap_protocol.utils.helpers import create_integer_hash from ldap_protocol.utils.queries import get_base_directories -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "c4888c68e221" diff --git a/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py b/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py index 33bd3a433..b2c9fc022 100644 --- a/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py +++ b/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py @@ -16,7 +16,7 @@ from ldap_protocol.ldap_schema.dto import EntityTypeDTO from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase from ldap_protocol.utils.queries import get_base_directories -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "c5a9b3f2e8d7" diff --git a/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py b/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py index 38d982694..9acbd5483 100644 --- a/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py +++ b/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py @@ -14,7 +14,7 @@ from entities import Attribute, CatalogueSetting, User from extra.alembic_utils import temporary_stub_column from ldap_protocol.kerberos import KERBEROS_STATE_NAME -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "dafg3a4b22ab" diff --git a/app/alembic/versions/f1abf7ef2443_add_container_object_class.py b/app/alembic/versions/f1abf7ef2443_add_container_object_class.py index cf1c80e1b..6c45cbef3 100644 --- a/app/alembic/versions/f1abf7ef2443_add_container_object_class.py +++ b/app/alembic/versions/f1abf7ef2443_add_container_object_class.py @@ -15,7 +15,7 @@ from entities import Attribute, Directory, EntityType from enums import EntityTypeNames from extra.alembic_utils import temporary_stub_column -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "f1abf7ef2443" diff --git a/app/alembic/versions/f24ed0e49df2_add_filter_anr.py b/app/alembic/versions/f24ed0e49df2_add_filter_anr.py index b6ec3ee1a..027cf02a0 100644 --- a/app/alembic/versions/f24ed0e49df2_add_filter_anr.py +++ b/app/alembic/versions/f24ed0e49df2_add_filter_anr.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import Session from entities import AttributeType -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "f24ed0e49df2" diff --git a/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py b/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py index efb2d0af5..f44d3a09f 100644 --- a/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py +++ b/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py @@ -14,7 +14,7 @@ from entities import Attribute, Directory, EntityType from enums import EntityTypeNames, SamAccountTypeCodes -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa revision: None | str = "f4e6cd18a01d" down_revision: None | str = "379fce54fb08" diff --git a/app/alembic/versions/fafc3d0b11ec_.py b/app/alembic/versions/fafc3d0b11ec_.py index 1ab09b6b3..57dfb6be5 100644 --- a/app/alembic/versions/fafc3d0b11ec_.py +++ b/app/alembic/versions/fafc3d0b11ec_.py @@ -23,7 +23,7 @@ get_base_directories, get_search_path, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "fafc3d0b11ec" diff --git a/app/extra/scripts/uac_sync.py b/app/extra/scripts/uac_sync.py index 8f9ce4f46..2fc6d3486 100644 --- a/app/extra/scripts/uac_sync.py +++ b/app/extra/scripts/uac_sync.py @@ -13,7 +13,7 @@ from ldap_protocol.kerberos import AbstractKadmin from ldap_protocol.objects import UserAccountControlFlag from ldap_protocol.utils.queries import add_lock_and_expire_attributes -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa async def disable_accounts( diff --git a/app/repo/__init__.py b/app/infrasture/__init__.py similarity index 100% rename from app/repo/__init__.py rename to app/infrasture/__init__.py diff --git a/app/repo/pg/__init__.py b/app/infrasture/pg/__init__.py similarity index 100% rename from app/repo/pg/__init__.py rename to app/infrasture/pg/__init__.py diff --git a/app/repo/pg/master_gateway.py b/app/infrasture/pg/master_gateway.py similarity index 100% rename from app/repo/pg/master_gateway.py rename to app/infrasture/pg/master_gateway.py diff --git a/app/repo/pg/tables.py b/app/infrasture/pg/tables.py similarity index 99% rename from app/repo/pg/tables.py rename to app/infrasture/pg/tables.py index 5391c95d5..ee2e51fec 100644 --- a/app/repo/pg/tables.py +++ b/app/infrasture/pg/tables.py @@ -61,7 +61,7 @@ MFAFlags, RoleScope, ) -from repo.pg.types import AuthorizationRulesType +from infrasture.pg.types import AuthorizationRulesType type DistinguishedNamePrefix = Literal["cn", "ou", "dc"] UniqueConstraint.argument_for("postgresql", "nulls_not_distinct", None) diff --git a/app/repo/pg/types.py b/app/infrasture/pg/types.py similarity index 100% rename from app/repo/pg/types.py rename to app/infrasture/pg/types.py diff --git a/app/ioc.py b/app/ioc.py index 81909c9c3..66dd583e7 100644 --- a/app/ioc.py +++ b/app/ioc.py @@ -152,7 +152,7 @@ from ldap_protocol.session_storage import RedisSessionStorage, SessionStorage from ldap_protocol.session_storage.repository import SessionRepository from password_utils import PasswordUtils -from repo.pg.master_gateway import PGMasterGateway +from infrasture.pg.master_gateway import PGMasterGateway SessionStorageClient = NewType("SessionStorageClient", redis.Redis) KadminHTTPClient = NewType("KadminHTTPClient", httpx.AsyncClient) diff --git a/app/ldap_protocol/auth/mfa_manager.py b/app/ldap_protocol/auth/mfa_manager.py index 334a66a44..2baf55a97 100644 --- a/app/ldap_protocol/auth/mfa_manager.py +++ b/app/ldap_protocol/auth/mfa_manager.py @@ -50,7 +50,7 @@ from ldap_protocol.session_storage import SessionStorage from ldap_protocol.session_storage.repository import SessionRepository from password_utils import PasswordUtils -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa ALGORITHM = "HS256" diff --git a/app/ldap_protocol/auth/setup_gateway.py b/app/ldap_protocol/auth/setup_gateway.py index 4294066c5..019fe7325 100644 --- a/app/ldap_protocol/auth/setup_gateway.py +++ b/app/ldap_protocol/auth/setup_gateway.py @@ -20,7 +20,7 @@ from ldap_protocol.utils.helpers import create_object_sid, generate_domain_sid from ldap_protocol.utils.queries import get_domain_object_class from password_utils import PasswordUtils -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class SetupGateway: diff --git a/app/ldap_protocol/dhcp/dhcp_manager_repository.py b/app/ldap_protocol/dhcp/dhcp_manager_repository.py index c0b0e7870..a179bc99f 100644 --- a/app/ldap_protocol/dhcp/dhcp_manager_repository.py +++ b/app/ldap_protocol/dhcp/dhcp_manager_repository.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from entities import CatalogueSetting -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .enums import DHCPManagerState diff --git a/app/ldap_protocol/dns/dns_gateway.py b/app/ldap_protocol/dns/dns_gateway.py index c5a525f35..eaf8a6b80 100644 --- a/app/ldap_protocol/dns/dns_gateway.py +++ b/app/ldap_protocol/dns/dns_gateway.py @@ -19,7 +19,7 @@ DNSManagerState, ) from ldap_protocol.dns.dto import DNSSettingDTO -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class DNSStateGateway: diff --git a/app/ldap_protocol/filter_interpreter.py b/app/ldap_protocol/filter_interpreter.py index ce0b301c5..66b0df01f 100644 --- a/app/ldap_protocol/filter_interpreter.py +++ b/app/ldap_protocol/filter_interpreter.py @@ -32,7 +32,7 @@ ) from ldap_protocol.utils.helpers import ft_to_dt from ldap_protocol.utils.queries import get_path_filter, get_search_path -from repo.pg.tables import ( +from infrasture.pg.tables import ( directory_table, groups_table, queryable_attr as qa, diff --git a/app/ldap_protocol/identity/provider_gateway.py b/app/ldap_protocol/identity/provider_gateway.py index db20ef68a..1d3c37270 100644 --- a/app/ldap_protocol/identity/provider_gateway.py +++ b/app/ldap_protocol/identity/provider_gateway.py @@ -10,7 +10,7 @@ from entities import Group, Role, User from enums import AuthorizationRules -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class IdentityProviderGateway: diff --git a/app/ldap_protocol/kerberos/ldap_structure.py b/app/ldap_protocol/kerberos/ldap_structure.py index 45228a3c8..2db881481 100644 --- a/app/ldap_protocol/kerberos/ldap_structure.py +++ b/app/ldap_protocol/kerberos/ldap_structure.py @@ -14,7 +14,7 @@ from ldap_protocol.roles.access_manager import AccessManager from ldap_protocol.roles.role_use_case import RoleUseCase from ldap_protocol.utils.queries import get_filter_from_path -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class KRBLDAPStructureManager: diff --git a/app/ldap_protocol/kerberos/utils.py b/app/ldap_protocol/kerberos/utils.py index c6278ed95..9025a8ab0 100644 --- a/app/ldap_protocol/kerberos/utils.py +++ b/app/ldap_protocol/kerberos/utils.py @@ -10,7 +10,7 @@ from entities import Attribute, CatalogueSetting, Directory, EntityType from enums import EntityTypeNames, StrEnum -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .exceptions import KRBAPIConnectionError, KRBAPIError diff --git a/app/ldap_protocol/ldap_requests/delete.py b/app/ldap_protocol/ldap_requests/delete.py index 70062918b..85aa49348 100644 --- a/app/ldap_protocol/ldap_requests/delete.py +++ b/app/ldap_protocol/ldap_requests/delete.py @@ -30,7 +30,7 @@ is_computer, validate_entry, ) -from repo.pg.tables import Attribute, queryable_attr as qa +from infrasture.pg.tables import Attribute, queryable_attr as qa from .base import BaseRequest from .contexts import LDAPDeleteRequestContext diff --git a/app/ldap_protocol/ldap_requests/modify.py b/app/ldap_protocol/ldap_requests/modify.py index 9f5b8789d..8f0642bb8 100644 --- a/app/ldap_protocol/ldap_requests/modify.py +++ b/app/ldap_protocol/ldap_requests/modify.py @@ -57,7 +57,7 @@ remove_from_group_membership, ) from password_utils import PasswordUtils -from repo.pg.tables import ( +from infrasture.pg.tables import ( directory_memberships_table, directory_table, queryable_attr as qa, diff --git a/app/ldap_protocol/ldap_requests/modify_dn.py b/app/ldap_protocol/ldap_requests/modify_dn.py index dc4421d49..7772748ad 100644 --- a/app/ldap_protocol/ldap_requests/modify_dn.py +++ b/app/ldap_protocol/ldap_requests/modify_dn.py @@ -20,7 +20,7 @@ ) from ldap_protocol.objects import ProtocolRequests from ldap_protocol.utils.queries import get_filter_from_path, validate_entry -from repo.pg.tables import ( +from infrasture.pg.tables import ( ace_directory_memberships_table, queryable_attr as qa, ) diff --git a/app/ldap_protocol/ldap_requests/search.py b/app/ldap_protocol/ldap_requests/search.py index d5ff4e679..467e3171a 100644 --- a/app/ldap_protocol/ldap_requests/search.py +++ b/app/ldap_protocol/ldap_requests/search.py @@ -61,7 +61,7 @@ get_path_filter, get_search_path, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .base import BaseRequest from .contexts import LDAPSearchRequestContext diff --git a/app/ldap_protocol/ldap_schema/attribute_type_dao.py b/app/ldap_protocol/ldap_schema/attribute_type_dao.py index 30211f74c..53f6afa69 100644 --- a/app/ldap_protocol/ldap_schema/attribute_type_dao.py +++ b/app/ldap_protocol/ldap_schema/attribute_type_dao.py @@ -26,7 +26,7 @@ PaginationResult, build_paginated_search_query, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa _convert_model_to_dto = get_converter( AttributeType, diff --git a/app/ldap_protocol/ldap_schema/entity_type_dao.py b/app/ldap_protocol/ldap_schema/entity_type_dao.py index abfdc49d1..987a1f6e0 100644 --- a/app/ldap_protocol/ldap_schema/entity_type_dao.py +++ b/app/ldap_protocol/ldap_schema/entity_type_dao.py @@ -32,7 +32,7 @@ PaginationResult, build_paginated_search_query, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa _convert = get_converter( EntityType, diff --git a/app/ldap_protocol/ldap_schema/object_class_dao.py b/app/ldap_protocol/ldap_schema/object_class_dao.py index 9bc29644e..e2d089b59 100644 --- a/app/ldap_protocol/ldap_schema/object_class_dao.py +++ b/app/ldap_protocol/ldap_schema/object_class_dao.py @@ -24,7 +24,7 @@ PaginationResult, build_paginated_search_query, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .dto import AttributeTypeDTO, ObjectClassDTO from .exceptions import ( diff --git a/app/ldap_protocol/multifactor.py b/app/ldap_protocol/multifactor.py index e3730b257..a45c11b9f 100644 --- a/app/ldap_protocol/multifactor.py +++ b/app/ldap_protocol/multifactor.py @@ -16,7 +16,7 @@ from config import Settings from entities import CatalogueSetting -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa @dataclass(frozen=True) diff --git a/app/ldap_protocol/policies/audit/events/handler.py b/app/ldap_protocol/policies/audit/events/handler.py index cd3fd36f7..77124bcc8 100644 --- a/app/ldap_protocol/policies/audit/events/handler.py +++ b/app/ldap_protocol/policies/audit/events/handler.py @@ -16,7 +16,7 @@ from entities import AuditPolicy, AuditPolicyTrigger from ldap_protocol.ldap_codes import LDAPCodes from ldap_protocol.objects import OperationEvent -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .dataclasses import NormalizedAuditEvent, RawAuditEvent from .managers import NormalizedAuditManager, RawAuditManager diff --git a/app/ldap_protocol/policies/network/gateway.py b/app/ldap_protocol/policies/network/gateway.py index 441243a18..fabc5a52c 100644 --- a/app/ldap_protocol/policies/network/gateway.py +++ b/app/ldap_protocol/policies/network/gateway.py @@ -15,7 +15,7 @@ NetworkPolicyNotFoundError, ) from ldap_protocol.utils.queries import get_groups -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class NetworkPolicyGateway: diff --git a/app/ldap_protocol/policies/network/validator_gateway.py b/app/ldap_protocol/policies/network/validator_gateway.py index e04cb0dbe..f8b01e8e2 100644 --- a/app/ldap_protocol/policies/network/validator_gateway.py +++ b/app/ldap_protocol/policies/network/validator_gateway.py @@ -13,7 +13,7 @@ from entities import Group, NetworkPolicy, User from enums import ProtocolType -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class NetworkPolicyValidatorGateway: diff --git a/app/ldap_protocol/policies/password/ban_word_repository.py b/app/ldap_protocol/policies/password/ban_word_repository.py index 89aed85ef..7fcbd2e57 100644 --- a/app/ldap_protocol/policies/password/ban_word_repository.py +++ b/app/ldap_protocol/policies/password/ban_word_repository.py @@ -14,7 +14,7 @@ from ldap_protocol.policies.password.exceptions import ( PasswordBanWordFileHasDuplicatesError, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class PasswordBanWordRepository: diff --git a/app/ldap_protocol/policies/password/dao.py b/app/ldap_protocol/policies/password/dao.py index 5c818ca0a..fee3db852 100644 --- a/app/ldap_protocol/policies/password/dao.py +++ b/app/ldap_protocol/policies/password/dao.py @@ -34,7 +34,7 @@ get_filter_from_path, get_groups, ) -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .dataclasses import ( DefaultDomainPasswordPolicyPreset as DefaultDomainP, diff --git a/app/ldap_protocol/roles/access_manager.py b/app/ldap_protocol/roles/access_manager.py index e651e5d62..4973bc35e 100644 --- a/app/ldap_protocol/roles/access_manager.py +++ b/app/ldap_protocol/roles/access_manager.py @@ -12,7 +12,7 @@ from entities import AccessControlEntry, Directory from enums import AceType, RoleScope from ldap_protocol.objects import Changes, Operation -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class AccessManager: diff --git a/app/ldap_protocol/roles/ace_dao.py b/app/ldap_protocol/roles/ace_dao.py index 679268cfd..e7e9344e9 100644 --- a/app/ldap_protocol/roles/ace_dao.py +++ b/app/ldap_protocol/roles/ace_dao.py @@ -16,7 +16,7 @@ from enums import AceType, RoleScope from ldap_protocol.utils.helpers import get_depth_by_dn from ldap_protocol.utils.queries import get_path_filter, get_search_path -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .dataclasses import AccessControlEntryDTO from .exceptions import ( diff --git a/app/ldap_protocol/roles/role_dao.py b/app/ldap_protocol/roles/role_dao.py index f1f14c83e..989e92f62 100644 --- a/app/ldap_protocol/roles/role_dao.py +++ b/app/ldap_protocol/roles/role_dao.py @@ -14,7 +14,7 @@ from entities import AccessControlEntry, Group, Role from enums import AuthorizationRules, RoleConstants from ldap_protocol.utils.queries import get_groups -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa from .ace_dao import _convert as ace_convert from .dataclasses import AccessControlEntryDTO, RoleDTO diff --git a/app/ldap_protocol/roles/role_use_case.py b/app/ldap_protocol/roles/role_use_case.py index d9c2921e0..d8173d2a9 100644 --- a/app/ldap_protocol/roles/role_use_case.py +++ b/app/ldap_protocol/roles/role_use_case.py @@ -10,7 +10,7 @@ from enums import AuthorizationRules, RoleConstants, RoleScope from ldap_protocol.kerberos.utils import get_system_container_dn from ldap_protocol.utils.queries import get_base_directories -from repo.pg.tables import ( +from infrasture.pg.tables import ( access_control_entries_table, ace_directory_memberships_table, queryable_attr as qa, diff --git a/app/ldap_protocol/utils/cte.py b/app/ldap_protocol/utils/cte.py index 7b4628254..373b88ffe 100644 --- a/app/ldap_protocol/utils/cte.py +++ b/app/ldap_protocol/utils/cte.py @@ -10,7 +10,7 @@ from sqlalchemy.sql.selectable import CTE from entities import Directory, Group -from repo.pg.tables import ( +from infrasture.pg.tables import ( directory_memberships_table, directory_table, groups_table, diff --git a/app/ldap_protocol/utils/queries.py b/app/ldap_protocol/utils/queries.py index 39d93b016..aa86eb6b7 100644 --- a/app/ldap_protocol/utils/queries.py +++ b/app/ldap_protocol/utils/queries.py @@ -21,7 +21,7 @@ AttributeValueValidator, AttributeValueValidatorError, ) -from repo.pg.tables import ( +from infrasture.pg.tables import ( directory_memberships_table, directory_table, queryable_attr as qa, diff --git a/app/ldap_protocol/utils/raw_definition_parser.py b/app/ldap_protocol/utils/raw_definition_parser.py index 0d3ddfa27..6f9f119ac 100644 --- a/app/ldap_protocol/utils/raw_definition_parser.py +++ b/app/ldap_protocol/utils/raw_definition_parser.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from entities import AttributeType, ObjectClass -from repo.pg.tables import queryable_attr as qa +from infrasture.pg.tables import queryable_attr as qa class RawDefinitionParser: From ec1209e7640855e73af08bf7126c70bbfd73a613 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:30:52 +0300 Subject: [PATCH 02/27] fix: correct import paths from 'infrasture' to 'infrastructure' across multiple modules --- app/alembic/env.py | 2 +- app/alembic/versions/01f3f05a5b11_add_primary_group_id.py | 2 +- app/alembic/versions/05ddc0bd562a_add_roles.py | 2 +- app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py | 2 +- app/alembic/versions/275222846605_initial_ldap_schema.py | 2 +- app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py | 2 +- app/alembic/versions/4798b12b97aa_dedicated_servers.py | 2 +- app/alembic/versions/4e8772277cfe_add_web_permissions.py | 2 +- .../6303f5c706ec_update_krbadmin_useraccountcontrol_.py | 2 +- app/alembic/versions/6c858cc05da7_add_default_admin_name.py | 2 +- app/alembic/versions/71e642808369_add_directory_is_system.py | 2 +- app/alembic/versions/8164b4a9e1f1_add_ou_computers.py | 2 +- app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py | 2 +- app/alembic/versions/ba78cef9700a_initial_entity_type.py | 2 +- app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py | 2 +- app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py | 2 +- app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py | 2 +- app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py | 2 +- app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py | 2 +- app/alembic/versions/f1abf7ef2443_add_container_object_class.py | 2 +- app/alembic/versions/f24ed0e49df2_add_filter_anr.py | 2 +- app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py | 2 +- app/alembic/versions/fafc3d0b11ec_.py | 2 +- app/extra/scripts/uac_sync.py | 2 +- app/{infrasture => infrastructure}/__init__.py | 0 app/{infrasture => infrastructure}/pg/__init__.py | 0 app/{infrasture => infrastructure}/pg/master_gateway.py | 0 app/{infrasture => infrastructure}/pg/tables.py | 2 +- app/{infrasture => infrastructure}/pg/types.py | 0 app/ioc.py | 2 +- app/ldap_protocol/auth/mfa_manager.py | 2 +- app/ldap_protocol/auth/setup_gateway.py | 2 +- app/ldap_protocol/dhcp/dhcp_manager_repository.py | 2 +- app/ldap_protocol/dns/dns_gateway.py | 2 +- app/ldap_protocol/filter_interpreter.py | 2 +- app/ldap_protocol/identity/provider_gateway.py | 2 +- app/ldap_protocol/kerberos/ldap_structure.py | 2 +- app/ldap_protocol/kerberos/utils.py | 2 +- app/ldap_protocol/ldap_requests/delete.py | 2 +- app/ldap_protocol/ldap_requests/modify.py | 2 +- app/ldap_protocol/ldap_requests/modify_dn.py | 2 +- app/ldap_protocol/ldap_requests/search.py | 2 +- app/ldap_protocol/ldap_schema/attribute_type_dao.py | 2 +- app/ldap_protocol/ldap_schema/entity_type_dao.py | 2 +- app/ldap_protocol/ldap_schema/object_class_dao.py | 2 +- app/ldap_protocol/multifactor.py | 2 +- app/ldap_protocol/policies/audit/events/handler.py | 2 +- app/ldap_protocol/policies/network/gateway.py | 2 +- app/ldap_protocol/policies/network/validator_gateway.py | 2 +- app/ldap_protocol/policies/password/ban_word_repository.py | 2 +- app/ldap_protocol/policies/password/dao.py | 2 +- app/ldap_protocol/roles/access_manager.py | 2 +- app/ldap_protocol/roles/ace_dao.py | 2 +- app/ldap_protocol/roles/role_dao.py | 2 +- app/ldap_protocol/roles/role_use_case.py | 2 +- app/ldap_protocol/utils/cte.py | 2 +- app/ldap_protocol/utils/queries.py | 2 +- app/ldap_protocol/utils/raw_definition_parser.py | 2 +- 58 files changed, 54 insertions(+), 54 deletions(-) rename app/{infrasture => infrastructure}/__init__.py (100%) rename app/{infrasture => infrastructure}/pg/__init__.py (100%) rename app/{infrasture => infrastructure}/pg/master_gateway.py (100%) rename app/{infrasture => infrastructure}/pg/tables.py (99%) rename app/{infrasture => infrastructure}/pg/types.py (100%) diff --git a/app/alembic/env.py b/app/alembic/env.py index 6514ef5cc..5c09b3b89 100644 --- a/app/alembic/env.py +++ b/app/alembic/env.py @@ -16,7 +16,7 @@ MFAProvider, MigrationProvider, ) -from infrasture.pg.tables import metadata +from infrastructure.pg.tables import metadata # this is the Alembic Config object, which provides # access to the values within the .ini file in use. diff --git a/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py index 2fb64a406..ffacd5f84 100644 --- a/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py +++ b/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py @@ -29,7 +29,7 @@ get_filter_from_path, get_search_path, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "01f3f05a5b11" diff --git a/app/alembic/versions/05ddc0bd562a_add_roles.py b/app/alembic/versions/05ddc0bd562a_add_roles.py index afe43802c..5bff405d2 100644 --- a/app/alembic/versions/05ddc0bd562a_add_roles.py +++ b/app/alembic/versions/05ddc0bd562a_add_roles.py @@ -15,7 +15,7 @@ from extra.alembic_utils import temporary_stub_column from ldap_protocol.roles.role_use_case import RoleUseCase from ldap_protocol.utils.queries import get_base_directories -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "05ddc0bd562a" diff --git a/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py b/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py index 14404b9e7..74c2ac0cc 100644 --- a/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py +++ b/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py @@ -16,7 +16,7 @@ from constants import READ_ONLY_GROUP_NAME from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "16a9fa2c1f1e" diff --git a/app/alembic/versions/275222846605_initial_ldap_schema.py b/app/alembic/versions/275222846605_initial_ldap_schema.py index e26c29948..bc3ef4e55 100644 --- a/app/alembic/versions/275222846605_initial_ldap_schema.py +++ b/app/alembic/versions/275222846605_initial_ldap_schema.py @@ -23,7 +23,7 @@ from ldap_protocol.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "275222846605" diff --git a/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py b/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py index b07eae0ae..f4007a107 100644 --- a/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py +++ b/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py @@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from entities import Attribute, Directory -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "379fce54fb08" diff --git a/app/alembic/versions/4798b12b97aa_dedicated_servers.py b/app/alembic/versions/4798b12b97aa_dedicated_servers.py index 34cd98d2c..e35f130f1 100644 --- a/app/alembic/versions/4798b12b97aa_dedicated_servers.py +++ b/app/alembic/versions/4798b12b97aa_dedicated_servers.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import Session from entities import CatalogueSetting, DedicatedServer -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "4798b12b97aa" diff --git a/app/alembic/versions/4e8772277cfe_add_web_permissions.py b/app/alembic/versions/4e8772277cfe_add_web_permissions.py index e4902e70e..8e29afbaf 100644 --- a/app/alembic/versions/4e8772277cfe_add_web_permissions.py +++ b/app/alembic/versions/4e8772277cfe_add_web_permissions.py @@ -13,7 +13,7 @@ from entities import Role from enums import AuthorizationRules, RoleConstants -from infrasture.pg.types import AuthorizationRulesType +from infrastructure.pg.types import AuthorizationRulesType # revision identifiers, used by Alembic. revision: None | str = "4e8772277cfe" diff --git a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index dff38cc29..dee471684 100644 --- a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -17,7 +17,7 @@ from extra.alembic_utils import temporary_stub_column from ldap_protocol.objects import UserAccountControlFlag from ldap_protocol.utils.helpers import create_integer_hash -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "6303f5c706ec" diff --git a/app/alembic/versions/6c858cc05da7_add_default_admin_name.py b/app/alembic/versions/6c858cc05da7_add_default_admin_name.py index 1e3837c18..56b0677af 100644 --- a/app/alembic/versions/6c858cc05da7_add_default_admin_name.py +++ b/app/alembic/versions/6c858cc05da7_add_default_admin_name.py @@ -13,7 +13,7 @@ from entities import Attribute, User from extra.alembic_utils import temporary_stub_column -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "6c858cc05da7" diff --git a/app/alembic/versions/71e642808369_add_directory_is_system.py b/app/alembic/versions/71e642808369_add_directory_is_system.py index 3da2e1805..94e550cb5 100644 --- a/app/alembic/versions/71e642808369_add_directory_is_system.py +++ b/app/alembic/versions/71e642808369_add_directory_is_system.py @@ -21,7 +21,7 @@ ) from entities import Directory from ldap_protocol.utils.queries import get_base_directories -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "71e642808369" diff --git a/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py index 67ac89487..6893c1537 100644 --- a/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py +++ b/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py @@ -16,7 +16,7 @@ from extra.alembic_utils import temporary_stub_column from ldap_protocol.roles.role_use_case import RoleUseCase from ldap_protocol.utils.queries import get_base_directories -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "8164b4a9e1f1" diff --git a/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py b/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py index bf5919c86..0b6ca39ec 100644 --- a/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py +++ b/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from entities import Attribute, Directory -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "a1b2c3d4e5f6" diff --git a/app/alembic/versions/ba78cef9700a_initial_entity_type.py b/app/alembic/versions/ba78cef9700a_initial_entity_type.py index 9168ea7fd..16fd6147d 100644 --- a/app/alembic/versions/ba78cef9700a_initial_entity_type.py +++ b/app/alembic/versions/ba78cef9700a_initial_entity_type.py @@ -20,7 +20,7 @@ from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase from ldap_protocol.utils.queries import get_base_directories -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "ba78cef9700a" diff --git a/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py b/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py index edb4825c8..b26844572 100644 --- a/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py +++ b/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py @@ -13,7 +13,7 @@ from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "bf435bbd95ff" diff --git a/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py b/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py index ee818ef73..a920c7ea0 100644 --- a/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py +++ b/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py @@ -13,7 +13,7 @@ from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "bv546ccd35fa" diff --git a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index 24af36276..bbf0b1a2e 100644 --- a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -17,7 +17,7 @@ from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO from ldap_protocol.utils.helpers import create_integer_hash from ldap_protocol.utils.queries import get_base_directories -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "c4888c68e221" diff --git a/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py b/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py index b2c9fc022..e2ed19f29 100644 --- a/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py +++ b/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py @@ -16,7 +16,7 @@ from ldap_protocol.ldap_schema.dto import EntityTypeDTO from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase from ldap_protocol.utils.queries import get_base_directories -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "c5a9b3f2e8d7" diff --git a/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py b/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py index 9acbd5483..7fd621737 100644 --- a/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py +++ b/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py @@ -14,7 +14,7 @@ from entities import Attribute, CatalogueSetting, User from extra.alembic_utils import temporary_stub_column from ldap_protocol.kerberos import KERBEROS_STATE_NAME -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "dafg3a4b22ab" diff --git a/app/alembic/versions/f1abf7ef2443_add_container_object_class.py b/app/alembic/versions/f1abf7ef2443_add_container_object_class.py index 6c45cbef3..a3a8d42e1 100644 --- a/app/alembic/versions/f1abf7ef2443_add_container_object_class.py +++ b/app/alembic/versions/f1abf7ef2443_add_container_object_class.py @@ -15,7 +15,7 @@ from entities import Attribute, Directory, EntityType from enums import EntityTypeNames from extra.alembic_utils import temporary_stub_column -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "f1abf7ef2443" diff --git a/app/alembic/versions/f24ed0e49df2_add_filter_anr.py b/app/alembic/versions/f24ed0e49df2_add_filter_anr.py index 027cf02a0..e1bb4c8f7 100644 --- a/app/alembic/versions/f24ed0e49df2_add_filter_anr.py +++ b/app/alembic/versions/f24ed0e49df2_add_filter_anr.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import Session from entities import AttributeType -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision: None | str = "f24ed0e49df2" diff --git a/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py b/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py index f44d3a09f..311d89056 100644 --- a/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py +++ b/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py @@ -14,7 +14,7 @@ from entities import Attribute, Directory, EntityType from enums import EntityTypeNames, SamAccountTypeCodes -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa revision: None | str = "f4e6cd18a01d" down_revision: None | str = "379fce54fb08" diff --git a/app/alembic/versions/fafc3d0b11ec_.py b/app/alembic/versions/fafc3d0b11ec_.py index 57dfb6be5..a7604f07a 100644 --- a/app/alembic/versions/fafc3d0b11ec_.py +++ b/app/alembic/versions/fafc3d0b11ec_.py @@ -23,7 +23,7 @@ get_base_directories, get_search_path, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. revision = "fafc3d0b11ec" diff --git a/app/extra/scripts/uac_sync.py b/app/extra/scripts/uac_sync.py index 2fc6d3486..52b35245a 100644 --- a/app/extra/scripts/uac_sync.py +++ b/app/extra/scripts/uac_sync.py @@ -13,7 +13,7 @@ from ldap_protocol.kerberos import AbstractKadmin from ldap_protocol.objects import UserAccountControlFlag from ldap_protocol.utils.queries import add_lock_and_expire_attributes -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa async def disable_accounts( diff --git a/app/infrasture/__init__.py b/app/infrastructure/__init__.py similarity index 100% rename from app/infrasture/__init__.py rename to app/infrastructure/__init__.py diff --git a/app/infrasture/pg/__init__.py b/app/infrastructure/pg/__init__.py similarity index 100% rename from app/infrasture/pg/__init__.py rename to app/infrastructure/pg/__init__.py diff --git a/app/infrasture/pg/master_gateway.py b/app/infrastructure/pg/master_gateway.py similarity index 100% rename from app/infrasture/pg/master_gateway.py rename to app/infrastructure/pg/master_gateway.py diff --git a/app/infrasture/pg/tables.py b/app/infrastructure/pg/tables.py similarity index 99% rename from app/infrasture/pg/tables.py rename to app/infrastructure/pg/tables.py index ee2e51fec..689241a36 100644 --- a/app/infrasture/pg/tables.py +++ b/app/infrastructure/pg/tables.py @@ -61,7 +61,7 @@ MFAFlags, RoleScope, ) -from infrasture.pg.types import AuthorizationRulesType +from infrastructure.pg.types import AuthorizationRulesType type DistinguishedNamePrefix = Literal["cn", "ou", "dc"] UniqueConstraint.argument_for("postgresql", "nulls_not_distinct", None) diff --git a/app/infrasture/pg/types.py b/app/infrastructure/pg/types.py similarity index 100% rename from app/infrasture/pg/types.py rename to app/infrastructure/pg/types.py diff --git a/app/ioc.py b/app/ioc.py index 66dd583e7..386b0a739 100644 --- a/app/ioc.py +++ b/app/ioc.py @@ -152,7 +152,7 @@ from ldap_protocol.session_storage import RedisSessionStorage, SessionStorage from ldap_protocol.session_storage.repository import SessionRepository from password_utils import PasswordUtils -from infrasture.pg.master_gateway import PGMasterGateway +from infrastructure.pg.master_gateway import PGMasterGateway SessionStorageClient = NewType("SessionStorageClient", redis.Redis) KadminHTTPClient = NewType("KadminHTTPClient", httpx.AsyncClient) diff --git a/app/ldap_protocol/auth/mfa_manager.py b/app/ldap_protocol/auth/mfa_manager.py index 2baf55a97..b6d52824b 100644 --- a/app/ldap_protocol/auth/mfa_manager.py +++ b/app/ldap_protocol/auth/mfa_manager.py @@ -50,7 +50,7 @@ from ldap_protocol.session_storage import SessionStorage from ldap_protocol.session_storage.repository import SessionRepository from password_utils import PasswordUtils -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa ALGORITHM = "HS256" diff --git a/app/ldap_protocol/auth/setup_gateway.py b/app/ldap_protocol/auth/setup_gateway.py index 019fe7325..f0372f603 100644 --- a/app/ldap_protocol/auth/setup_gateway.py +++ b/app/ldap_protocol/auth/setup_gateway.py @@ -20,7 +20,7 @@ from ldap_protocol.utils.helpers import create_object_sid, generate_domain_sid from ldap_protocol.utils.queries import get_domain_object_class from password_utils import PasswordUtils -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class SetupGateway: diff --git a/app/ldap_protocol/dhcp/dhcp_manager_repository.py b/app/ldap_protocol/dhcp/dhcp_manager_repository.py index a179bc99f..3be8efec8 100644 --- a/app/ldap_protocol/dhcp/dhcp_manager_repository.py +++ b/app/ldap_protocol/dhcp/dhcp_manager_repository.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from entities import CatalogueSetting -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .enums import DHCPManagerState diff --git a/app/ldap_protocol/dns/dns_gateway.py b/app/ldap_protocol/dns/dns_gateway.py index eaf8a6b80..a9b12811b 100644 --- a/app/ldap_protocol/dns/dns_gateway.py +++ b/app/ldap_protocol/dns/dns_gateway.py @@ -19,7 +19,7 @@ DNSManagerState, ) from ldap_protocol.dns.dto import DNSSettingDTO -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class DNSStateGateway: diff --git a/app/ldap_protocol/filter_interpreter.py b/app/ldap_protocol/filter_interpreter.py index 66b0df01f..eccebfc6d 100644 --- a/app/ldap_protocol/filter_interpreter.py +++ b/app/ldap_protocol/filter_interpreter.py @@ -32,7 +32,7 @@ ) from ldap_protocol.utils.helpers import ft_to_dt from ldap_protocol.utils.queries import get_path_filter, get_search_path -from infrasture.pg.tables import ( +from infrastructure.pg.tables import ( directory_table, groups_table, queryable_attr as qa, diff --git a/app/ldap_protocol/identity/provider_gateway.py b/app/ldap_protocol/identity/provider_gateway.py index 1d3c37270..6c24563d3 100644 --- a/app/ldap_protocol/identity/provider_gateway.py +++ b/app/ldap_protocol/identity/provider_gateway.py @@ -10,7 +10,7 @@ from entities import Group, Role, User from enums import AuthorizationRules -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class IdentityProviderGateway: diff --git a/app/ldap_protocol/kerberos/ldap_structure.py b/app/ldap_protocol/kerberos/ldap_structure.py index 2db881481..f95845aa4 100644 --- a/app/ldap_protocol/kerberos/ldap_structure.py +++ b/app/ldap_protocol/kerberos/ldap_structure.py @@ -14,7 +14,7 @@ from ldap_protocol.roles.access_manager import AccessManager from ldap_protocol.roles.role_use_case import RoleUseCase from ldap_protocol.utils.queries import get_filter_from_path -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class KRBLDAPStructureManager: diff --git a/app/ldap_protocol/kerberos/utils.py b/app/ldap_protocol/kerberos/utils.py index 9025a8ab0..ed22cda91 100644 --- a/app/ldap_protocol/kerberos/utils.py +++ b/app/ldap_protocol/kerberos/utils.py @@ -10,7 +10,7 @@ from entities import Attribute, CatalogueSetting, Directory, EntityType from enums import EntityTypeNames, StrEnum -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .exceptions import KRBAPIConnectionError, KRBAPIError diff --git a/app/ldap_protocol/ldap_requests/delete.py b/app/ldap_protocol/ldap_requests/delete.py index 85aa49348..dcd25e215 100644 --- a/app/ldap_protocol/ldap_requests/delete.py +++ b/app/ldap_protocol/ldap_requests/delete.py @@ -30,7 +30,7 @@ is_computer, validate_entry, ) -from infrasture.pg.tables import Attribute, queryable_attr as qa +from infrastructure.pg.tables import Attribute, queryable_attr as qa from .base import BaseRequest from .contexts import LDAPDeleteRequestContext diff --git a/app/ldap_protocol/ldap_requests/modify.py b/app/ldap_protocol/ldap_requests/modify.py index 8f0642bb8..96591a595 100644 --- a/app/ldap_protocol/ldap_requests/modify.py +++ b/app/ldap_protocol/ldap_requests/modify.py @@ -57,7 +57,7 @@ remove_from_group_membership, ) from password_utils import PasswordUtils -from infrasture.pg.tables import ( +from infrastructure.pg.tables import ( directory_memberships_table, directory_table, queryable_attr as qa, diff --git a/app/ldap_protocol/ldap_requests/modify_dn.py b/app/ldap_protocol/ldap_requests/modify_dn.py index 7772748ad..cc1b94b32 100644 --- a/app/ldap_protocol/ldap_requests/modify_dn.py +++ b/app/ldap_protocol/ldap_requests/modify_dn.py @@ -20,7 +20,7 @@ ) from ldap_protocol.objects import ProtocolRequests from ldap_protocol.utils.queries import get_filter_from_path, validate_entry -from infrasture.pg.tables import ( +from infrastructure.pg.tables import ( ace_directory_memberships_table, queryable_attr as qa, ) diff --git a/app/ldap_protocol/ldap_requests/search.py b/app/ldap_protocol/ldap_requests/search.py index 467e3171a..ba3a75ec9 100644 --- a/app/ldap_protocol/ldap_requests/search.py +++ b/app/ldap_protocol/ldap_requests/search.py @@ -61,7 +61,7 @@ get_path_filter, get_search_path, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .base import BaseRequest from .contexts import LDAPSearchRequestContext diff --git a/app/ldap_protocol/ldap_schema/attribute_type_dao.py b/app/ldap_protocol/ldap_schema/attribute_type_dao.py index 53f6afa69..2c9aae215 100644 --- a/app/ldap_protocol/ldap_schema/attribute_type_dao.py +++ b/app/ldap_protocol/ldap_schema/attribute_type_dao.py @@ -26,7 +26,7 @@ PaginationResult, build_paginated_search_query, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa _convert_model_to_dto = get_converter( AttributeType, diff --git a/app/ldap_protocol/ldap_schema/entity_type_dao.py b/app/ldap_protocol/ldap_schema/entity_type_dao.py index 987a1f6e0..8d738a960 100644 --- a/app/ldap_protocol/ldap_schema/entity_type_dao.py +++ b/app/ldap_protocol/ldap_schema/entity_type_dao.py @@ -32,7 +32,7 @@ PaginationResult, build_paginated_search_query, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa _convert = get_converter( EntityType, diff --git a/app/ldap_protocol/ldap_schema/object_class_dao.py b/app/ldap_protocol/ldap_schema/object_class_dao.py index e2d089b59..1dfbea7d1 100644 --- a/app/ldap_protocol/ldap_schema/object_class_dao.py +++ b/app/ldap_protocol/ldap_schema/object_class_dao.py @@ -24,7 +24,7 @@ PaginationResult, build_paginated_search_query, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .dto import AttributeTypeDTO, ObjectClassDTO from .exceptions import ( diff --git a/app/ldap_protocol/multifactor.py b/app/ldap_protocol/multifactor.py index a45c11b9f..3e0edd888 100644 --- a/app/ldap_protocol/multifactor.py +++ b/app/ldap_protocol/multifactor.py @@ -16,7 +16,7 @@ from config import Settings from entities import CatalogueSetting -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa @dataclass(frozen=True) diff --git a/app/ldap_protocol/policies/audit/events/handler.py b/app/ldap_protocol/policies/audit/events/handler.py index 77124bcc8..f0e4b622a 100644 --- a/app/ldap_protocol/policies/audit/events/handler.py +++ b/app/ldap_protocol/policies/audit/events/handler.py @@ -16,7 +16,7 @@ from entities import AuditPolicy, AuditPolicyTrigger from ldap_protocol.ldap_codes import LDAPCodes from ldap_protocol.objects import OperationEvent -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .dataclasses import NormalizedAuditEvent, RawAuditEvent from .managers import NormalizedAuditManager, RawAuditManager diff --git a/app/ldap_protocol/policies/network/gateway.py b/app/ldap_protocol/policies/network/gateway.py index fabc5a52c..8124e4739 100644 --- a/app/ldap_protocol/policies/network/gateway.py +++ b/app/ldap_protocol/policies/network/gateway.py @@ -15,7 +15,7 @@ NetworkPolicyNotFoundError, ) from ldap_protocol.utils.queries import get_groups -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class NetworkPolicyGateway: diff --git a/app/ldap_protocol/policies/network/validator_gateway.py b/app/ldap_protocol/policies/network/validator_gateway.py index f8b01e8e2..c4ad2f67b 100644 --- a/app/ldap_protocol/policies/network/validator_gateway.py +++ b/app/ldap_protocol/policies/network/validator_gateway.py @@ -13,7 +13,7 @@ from entities import Group, NetworkPolicy, User from enums import ProtocolType -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class NetworkPolicyValidatorGateway: diff --git a/app/ldap_protocol/policies/password/ban_word_repository.py b/app/ldap_protocol/policies/password/ban_word_repository.py index 7fcbd2e57..dd87eb106 100644 --- a/app/ldap_protocol/policies/password/ban_word_repository.py +++ b/app/ldap_protocol/policies/password/ban_word_repository.py @@ -14,7 +14,7 @@ from ldap_protocol.policies.password.exceptions import ( PasswordBanWordFileHasDuplicatesError, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class PasswordBanWordRepository: diff --git a/app/ldap_protocol/policies/password/dao.py b/app/ldap_protocol/policies/password/dao.py index fee3db852..9493a1102 100644 --- a/app/ldap_protocol/policies/password/dao.py +++ b/app/ldap_protocol/policies/password/dao.py @@ -34,7 +34,7 @@ get_filter_from_path, get_groups, ) -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .dataclasses import ( DefaultDomainPasswordPolicyPreset as DefaultDomainP, diff --git a/app/ldap_protocol/roles/access_manager.py b/app/ldap_protocol/roles/access_manager.py index 4973bc35e..801c9e999 100644 --- a/app/ldap_protocol/roles/access_manager.py +++ b/app/ldap_protocol/roles/access_manager.py @@ -12,7 +12,7 @@ from entities import AccessControlEntry, Directory from enums import AceType, RoleScope from ldap_protocol.objects import Changes, Operation -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class AccessManager: diff --git a/app/ldap_protocol/roles/ace_dao.py b/app/ldap_protocol/roles/ace_dao.py index e7e9344e9..a9eb02b18 100644 --- a/app/ldap_protocol/roles/ace_dao.py +++ b/app/ldap_protocol/roles/ace_dao.py @@ -16,7 +16,7 @@ from enums import AceType, RoleScope from ldap_protocol.utils.helpers import get_depth_by_dn from ldap_protocol.utils.queries import get_path_filter, get_search_path -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .dataclasses import AccessControlEntryDTO from .exceptions import ( diff --git a/app/ldap_protocol/roles/role_dao.py b/app/ldap_protocol/roles/role_dao.py index 989e92f62..63f5c49fb 100644 --- a/app/ldap_protocol/roles/role_dao.py +++ b/app/ldap_protocol/roles/role_dao.py @@ -14,7 +14,7 @@ from entities import AccessControlEntry, Group, Role from enums import AuthorizationRules, RoleConstants from ldap_protocol.utils.queries import get_groups -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa from .ace_dao import _convert as ace_convert from .dataclasses import AccessControlEntryDTO, RoleDTO diff --git a/app/ldap_protocol/roles/role_use_case.py b/app/ldap_protocol/roles/role_use_case.py index d8173d2a9..bac74001c 100644 --- a/app/ldap_protocol/roles/role_use_case.py +++ b/app/ldap_protocol/roles/role_use_case.py @@ -10,7 +10,7 @@ from enums import AuthorizationRules, RoleConstants, RoleScope from ldap_protocol.kerberos.utils import get_system_container_dn from ldap_protocol.utils.queries import get_base_directories -from infrasture.pg.tables import ( +from infrastructure.pg.tables import ( access_control_entries_table, ace_directory_memberships_table, queryable_attr as qa, diff --git a/app/ldap_protocol/utils/cte.py b/app/ldap_protocol/utils/cte.py index 373b88ffe..93efb0126 100644 --- a/app/ldap_protocol/utils/cte.py +++ b/app/ldap_protocol/utils/cte.py @@ -10,7 +10,7 @@ from sqlalchemy.sql.selectable import CTE from entities import Directory, Group -from infrasture.pg.tables import ( +from infrastructure.pg.tables import ( directory_memberships_table, directory_table, groups_table, diff --git a/app/ldap_protocol/utils/queries.py b/app/ldap_protocol/utils/queries.py index aa86eb6b7..8f8aea41e 100644 --- a/app/ldap_protocol/utils/queries.py +++ b/app/ldap_protocol/utils/queries.py @@ -21,7 +21,7 @@ AttributeValueValidator, AttributeValueValidatorError, ) -from infrasture.pg.tables import ( +from infrastructure.pg.tables import ( directory_memberships_table, directory_table, queryable_attr as qa, diff --git a/app/ldap_protocol/utils/raw_definition_parser.py b/app/ldap_protocol/utils/raw_definition_parser.py index 6f9f119ac..69c5c896a 100644 --- a/app/ldap_protocol/utils/raw_definition_parser.py +++ b/app/ldap_protocol/utils/raw_definition_parser.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from entities import AttributeType, ObjectClass -from infrasture.pg.tables import queryable_attr as qa +from infrastructure.pg.tables import queryable_attr as qa class RawDefinitionParser: From bc77c2098b80f5627e426907525056b55e40fc53 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:32:14 +0300 Subject: [PATCH 03/27] refactor: replace app with src folder --- {app => src}/__main__.py | 0 {app => src}/abstract_dao.py | 0 {app => src}/abstract_service.py | 0 {app => src}/alembic.ini | 0 {app => src}/alembic/README | 0 {app => src}/alembic/env.py | 0 {app => src}/alembic/script.py.mako | 0 .../alembic/versions/01f3f05a5b11_add_primary_group_id.py | 0 {app => src}/alembic/versions/05ddc0bd562a_add_roles.py | 0 .../alembic/versions/16a9fa2c1f1e_rename_readonly_group.py | 0 {app => src}/alembic/versions/196f0d327c6a_.py | 0 {app => src}/alembic/versions/275222846605_initial_ldap_schema.py | 0 {app => src}/alembic/versions/35d1542d2505_add_entity_id.py | 0 .../alembic/versions/379fce54fb08_rename_base_cn_to_cc.py | 0 {app => src}/alembic/versions/4334e2e871a4_add_sessions_ttl.py | 0 {app => src}/alembic/versions/4442d1d982a4_remove_krb_policy.py | 0 {app => src}/alembic/versions/4798b12b97aa_dedicated_servers.py | 0 {app => src}/alembic/versions/4e8772277cfe_add_web_permissions.py | 0 .../alembic/versions/56082d7ac0d4_remove_old_templates.py | 0 {app => src}/alembic/versions/59e98bbd8ad8_.py | 0 .../versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py | 0 {app => src}/alembic/versions/692ae64e0cc5_.py | 0 .../alembic/versions/6c858cc05da7_add_default_admin_name.py | 0 {app => src}/alembic/versions/6f8fe2548893_fix_read_only.py | 0 .../alembic/versions/71e642808369_add_directory_is_system.py | 0 {app => src}/alembic/versions/8164b4a9e1f1_add_ou_computers.py | 0 {app => src}/alembic/versions/8c2bd40dd809_add_protocols_attr.py | 0 .../alembic/versions/93ba193c6a53_add_hash_index_on_dir_path.py | 0 .../alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py | 0 {app => src}/alembic/versions/a7971f00ba4d_index_single_level.py | 0 .../versions/a99f866a7e3a_add_user_pwd_reset_permission.py | 0 .../versions/ad52bc16b87d_extend_password_policy_for_api.py | 0 {app => src}/alembic/versions/ba78cef9700a_initial_entity_type.py | 0 {app => src}/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py | 0 {app => src}/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py | 0 .../alembic/versions/c007129b7973_renew_sls_gpos_rsops.py | 0 .../alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py | 0 .../alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py | 0 {app => src}/alembic/versions/dafg3a4b22ab_add_preauth_princ.py | 0 .../alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py | 0 {app => src}/alembic/versions/e4d6d99d32bd_add_audit_policies.py | 0 .../versions/ec45e3e8aa0f_drop_password_policy_id_column.py | 0 {app => src}/alembic/versions/eeaed5989eb0_group_policies.py | 0 .../alembic/versions/f1abf7ef2443_add_container_object_class.py | 0 {app => src}/alembic/versions/f24ed0e49df2_add_filter_anr.py | 0 {app => src}/alembic/versions/f4e6cd18a01d_add_samaccounttype.py | 0 {app => src}/alembic/versions/f68a134a3685_add_bypass.py | 0 {app => src}/alembic/versions/fafc3d0b11ec_.py | 0 {app => src}/alembic/versions/fc8b7617c60a_attr_index.py | 0 {app => src}/api/__init__.py | 0 {app => src}/api/audit/__init__.py | 0 {app => src}/api/audit/adapter.py | 0 {app => src}/api/audit/router.py | 0 {app => src}/api/auth/adapters/__init__.py | 0 {app => src}/api/auth/adapters/auth.py | 0 {app => src}/api/auth/adapters/mfa.py | 0 {app => src}/api/auth/adapters/session_gateway.py | 0 {app => src}/api/auth/router_auth.py | 0 {app => src}/api/auth/router_mfa.py | 0 {app => src}/api/auth/session_router.py | 0 {app => src}/api/auth/utils.py | 0 {app => src}/api/base_adapter.py | 0 {app => src}/api/dhcp/__init__.py | 0 {app => src}/api/dhcp/adapter.py | 0 {app => src}/api/dhcp/router.py | 0 {app => src}/api/error_routing.py | 0 {app => src}/api/exception_handlers.py | 0 {app => src}/api/ldap_schema/__init__.py | 0 {app => src}/api/ldap_schema/adapters/__init__.py | 0 {app => src}/api/ldap_schema/adapters/attribute_type.py | 0 {app => src}/api/ldap_schema/adapters/base_ldap_schema_adapter.py | 0 {app => src}/api/ldap_schema/adapters/entity_type.py | 0 {app => src}/api/ldap_schema/adapters/object_class.py | 0 {app => src}/api/ldap_schema/attribute_type_router.py | 0 {app => src}/api/ldap_schema/entity_type_router.py | 0 {app => src}/api/ldap_schema/object_class_router.py | 0 {app => src}/api/ldap_schema/schema.py | 0 {app => src}/api/main/__init__.py | 0 {app => src}/api/main/adapters/__init__.py | 0 {app => src}/api/main/adapters/dns.py | 0 {app => src}/api/main/adapters/kerberos.py | 0 {app => src}/api/main/dns_router.py | 0 {app => src}/api/main/krb5_router.py | 0 {app => src}/api/main/router.py | 0 {app => src}/api/main/schema.py | 0 {app => src}/api/main/utils.py | 0 {app => src}/api/middlewares.py | 0 {app => src}/api/network/__init__.py | 0 {app => src}/api/network/adapters/__init__.py | 0 {app => src}/api/network/adapters/network.py | 0 {app => src}/api/network/router.py | 0 {app => src}/api/network/schema.py | 0 {app => src}/api/network/utils.py | 0 {app => src}/api/password_policy/__init__.py | 0 {app => src}/api/password_policy/adapter.py | 0 {app => src}/api/password_policy/error_utils.py | 0 {app => src}/api/password_policy/password_ban_word_router.py | 0 {app => src}/api/password_policy/password_policy_router.py | 0 {app => src}/api/password_policy/schemas.py | 0 {app => src}/api/password_policy/user_password_history_router.py | 0 {app => src}/api/shadow/__init__.py | 0 {app => src}/api/shadow/adapter.py | 0 {app => src}/api/shadow/router.py | 0 {app => src}/api/utils.py | 0 {app => src}/authorization_provider_protocol.py | 0 {app => src}/config.py | 0 {app => src}/constants.py | 0 {app => src}/db_routing.py | 0 {app => src}/entities.py | 0 {app => src}/enums.py | 0 {app => src}/errors/__init__.py | 0 {app => src}/errors/base.py | 0 {app => src}/extra/__init__.py | 0 {app => src}/extra/alembic_utils.py | 0 {app => src}/extra/common_passwords.txt | 0 {app => src}/extra/dump_acme_certs.py | 0 {app => src}/extra/generate_cert.sh | 0 {app => src}/extra/scripts/__init__.py | 0 {app => src}/extra/scripts/check_ldap_principal.py | 0 {app => src}/extra/scripts/principal_block_user_sync.py | 0 {app => src}/extra/scripts/uac_sync.py | 0 {app => src}/extra/scripts/update_admin_permissions.py | 0 {app => src}/extra/scripts/update_krb5_config.py | 0 {app => src}/extra/scripts/update_status_proccess_events.py | 0 {app => src}/extra/templates/kdc.conf | 0 {app => src}/extra/templates/krb5.conf | 0 {app => src}/infrastructure/__init__.py | 0 {app => src}/infrastructure/pg/__init__.py | 0 {app => src}/infrastructure/pg/master_gateway.py | 0 {app => src}/infrastructure/pg/tables.py | 0 {app => src}/infrastructure/pg/types.py | 0 {app => src}/ioc.py | 0 {app => src}/ldap_protocol/__init__.py | 0 {app => src}/ldap_protocol/asn1parser.py | 0 {app => src}/ldap_protocol/auth/__init__.py | 0 {app => src}/ldap_protocol/auth/auth_manager.py | 0 {app => src}/ldap_protocol/auth/dto.py | 0 {app => src}/ldap_protocol/auth/exceptions/__init__.py | 0 {app => src}/ldap_protocol/auth/exceptions/mfa.py | 0 {app => src}/ldap_protocol/auth/mfa_manager.py | 0 {app => src}/ldap_protocol/auth/schemas.py | 0 {app => src}/ldap_protocol/auth/setup_gateway.py | 0 {app => src}/ldap_protocol/auth/use_cases.py | 0 {app => src}/ldap_protocol/auth/utils.py | 0 {app => src}/ldap_protocol/custom_requests/__init__.py | 0 {app => src}/ldap_protocol/custom_requests/rename.py | 0 {app => src}/ldap_protocol/data_logger.py | 0 {app => src}/ldap_protocol/dependency.py | 0 {app => src}/ldap_protocol/dhcp/__init__.py | 0 {app => src}/ldap_protocol/dhcp/base.py | 0 {app => src}/ldap_protocol/dhcp/dataclasses.py | 0 {app => src}/ldap_protocol/dhcp/dhcp_manager_repository.py | 0 {app => src}/ldap_protocol/dhcp/enums.py | 0 {app => src}/ldap_protocol/dhcp/exceptions.py | 0 {app => src}/ldap_protocol/dhcp/kea_dhcp_manager.py | 0 {app => src}/ldap_protocol/dhcp/kea_dhcp_repository.py | 0 {app => src}/ldap_protocol/dhcp/retorts.py | 0 {app => src}/ldap_protocol/dhcp/schemas.py | 0 {app => src}/ldap_protocol/dhcp/stub.py | 0 {app => src}/ldap_protocol/dhcp/utils.py | 0 {app => src}/ldap_protocol/dialogue.py | 0 {app => src}/ldap_protocol/dns/__init__.py | 0 {app => src}/ldap_protocol/dns/base.py | 0 {app => src}/ldap_protocol/dns/dns_gateway.py | 0 {app => src}/ldap_protocol/dns/dto.py | 0 {app => src}/ldap_protocol/dns/exceptions.py | 0 {app => src}/ldap_protocol/dns/remote.py | 0 {app => src}/ldap_protocol/dns/selfhosted.py | 0 {app => src}/ldap_protocol/dns/stub.py | 0 {app => src}/ldap_protocol/dns/use_cases.py | 0 {app => src}/ldap_protocol/dns/utils.py | 0 {app => src}/ldap_protocol/filter_interpreter.py | 0 {app => src}/ldap_protocol/identity/__init__.py | 0 {app => src}/ldap_protocol/identity/exceptions.py | 0 {app => src}/ldap_protocol/identity/provider.py | 0 {app => src}/ldap_protocol/identity/provider_gateway.py | 0 {app => src}/ldap_protocol/identity/utils.py | 0 {app => src}/ldap_protocol/kerberos/__init__.py | 0 {app => src}/ldap_protocol/kerberos/base.py | 0 {app => src}/ldap_protocol/kerberos/client.py | 0 {app => src}/ldap_protocol/kerberos/exceptions.py | 0 {app => src}/ldap_protocol/kerberos/ldap_structure.py | 0 {app => src}/ldap_protocol/kerberos/schemas.py | 0 {app => src}/ldap_protocol/kerberos/service.py | 0 {app => src}/ldap_protocol/kerberos/stub.py | 0 {app => src}/ldap_protocol/kerberos/template_render.py | 0 {app => src}/ldap_protocol/kerberos/utils.py | 0 {app => src}/ldap_protocol/ldap_codes.py | 0 {app => src}/ldap_protocol/ldap_requests/__init__.py | 0 {app => src}/ldap_protocol/ldap_requests/abandon.py | 0 {app => src}/ldap_protocol/ldap_requests/add.py | 0 {app => src}/ldap_protocol/ldap_requests/base.py | 0 {app => src}/ldap_protocol/ldap_requests/bind.py | 0 {app => src}/ldap_protocol/ldap_requests/bind_methods/__init__.py | 0 {app => src}/ldap_protocol/ldap_requests/bind_methods/base.py | 0 .../ldap_protocol/ldap_requests/bind_methods/sasl_gssapi.py | 0 .../ldap_protocol/ldap_requests/bind_methods/sasl_plain.py | 0 .../ldap_protocol/ldap_requests/bind_methods/sasl_spnego.py | 0 {app => src}/ldap_protocol/ldap_requests/bind_methods/simple.py | 0 {app => src}/ldap_protocol/ldap_requests/compare.py | 0 {app => src}/ldap_protocol/ldap_requests/contexts.py | 0 {app => src}/ldap_protocol/ldap_requests/delete.py | 0 {app => src}/ldap_protocol/ldap_requests/exceptions.py | 0 {app => src}/ldap_protocol/ldap_requests/extended.py | 0 {app => src}/ldap_protocol/ldap_requests/modify.py | 0 {app => src}/ldap_protocol/ldap_requests/modify_dn.py | 0 {app => src}/ldap_protocol/ldap_requests/search.py | 0 {app => src}/ldap_protocol/ldap_responses.py | 0 {app => src}/ldap_protocol/ldap_schema/__init__.py | 0 {app => src}/ldap_protocol/ldap_schema/attribute_type_dao.py | 0 {app => src}/ldap_protocol/ldap_schema/attribute_type_use_case.py | 0 .../ldap_protocol/ldap_schema/attribute_value_validator.py | 0 {app => src}/ldap_protocol/ldap_schema/constants.py | 0 {app => src}/ldap_protocol/ldap_schema/dto.py | 0 {app => src}/ldap_protocol/ldap_schema/entity_type_dao.py | 0 {app => src}/ldap_protocol/ldap_schema/entity_type_use_case.py | 0 {app => src}/ldap_protocol/ldap_schema/exceptions.py | 0 {app => src}/ldap_protocol/ldap_schema/object_class_dao.py | 0 {app => src}/ldap_protocol/ldap_schema/object_class_use_case.py | 0 {app => src}/ldap_protocol/master_check_use_case.py | 0 {app => src}/ldap_protocol/messages.py | 0 {app => src}/ldap_protocol/multifactor.py | 0 {app => src}/ldap_protocol/objects.py | 0 {app => src}/ldap_protocol/permissions_checker.py | 0 {app => src}/ldap_protocol/policies/__init__.py | 0 {app => src}/ldap_protocol/policies/audit/__init__.py | 0 {app => src}/ldap_protocol/policies/audit/audit_use_case.py | 0 {app => src}/ldap_protocol/policies/audit/dataclasses.py | 0 {app => src}/ldap_protocol/policies/audit/destination_dao.py | 0 {app => src}/ldap_protocol/policies/audit/events/__init__.py | 0 {app => src}/ldap_protocol/policies/audit/events/dataclasses.py | 0 {app => src}/ldap_protocol/policies/audit/events/factory.py | 0 {app => src}/ldap_protocol/policies/audit/events/handler.py | 0 {app => src}/ldap_protocol/policies/audit/events/managers.py | 0 {app => src}/ldap_protocol/policies/audit/events/normalizer.py | 0 {app => src}/ldap_protocol/policies/audit/events/sender.py | 0 .../policies/audit/events/service_senders/__init__.py | 0 .../ldap_protocol/policies/audit/events/service_senders/base.py | 0 .../policies/audit/events/service_senders/rfc5424_serializer.py | 0 .../ldap_protocol/policies/audit/events/service_senders/syslog.py | 0 {app => src}/ldap_protocol/policies/audit/exception.py | 0 {app => src}/ldap_protocol/policies/audit/monitor.py | 0 {app => src}/ldap_protocol/policies/audit/policies_dao.py | 0 {app => src}/ldap_protocol/policies/audit/schemas.py | 0 {app => src}/ldap_protocol/policies/audit/service.py | 0 {app => src}/ldap_protocol/policies/network/__init__.py | 0 {app => src}/ldap_protocol/policies/network/dto.py | 0 {app => src}/ldap_protocol/policies/network/exceptions.py | 0 {app => src}/ldap_protocol/policies/network/gateway.py | 0 {app => src}/ldap_protocol/policies/network/use_cases.py | 0 {app => src}/ldap_protocol/policies/network/validator_gateway.py | 0 {app => src}/ldap_protocol/policies/network/validator_protocol.py | 0 {app => src}/ldap_protocol/policies/password/__init__.py | 0 .../ldap_protocol/policies/password/ban_word_repository.py | 0 {app => src}/ldap_protocol/policies/password/constants.py | 0 {app => src}/ldap_protocol/policies/password/dao.py | 0 {app => src}/ldap_protocol/policies/password/dataclasses.py | 0 {app => src}/ldap_protocol/policies/password/error_messages.py | 0 {app => src}/ldap_protocol/policies/password/exceptions.py | 0 {app => src}/ldap_protocol/policies/password/settings.py | 0 {app => src}/ldap_protocol/policies/password/use_cases.py | 0 {app => src}/ldap_protocol/policies/password/validator.py | 0 {app => src}/ldap_protocol/roles/__init__.py | 0 {app => src}/ldap_protocol/roles/access_manager.py | 0 {app => src}/ldap_protocol/roles/ace_dao.py | 0 {app => src}/ldap_protocol/roles/dataclasses.py | 0 {app => src}/ldap_protocol/roles/exceptions.py | 0 {app => src}/ldap_protocol/roles/role_dao.py | 0 {app => src}/ldap_protocol/roles/role_use_case.py | 0 {app => src}/ldap_protocol/rootdse/__init__.py | 0 {app => src}/ldap_protocol/rootdse/dto.py | 0 {app => src}/ldap_protocol/rootdse/gateway.py | 0 {app => src}/ldap_protocol/rootdse/gw_protocol.py | 0 {app => src}/ldap_protocol/rootdse/netlogon.py | 0 {app => src}/ldap_protocol/rootdse/reader.py | 0 {app => src}/ldap_protocol/server.py | 0 {app => src}/ldap_protocol/session_storage/__init__.py | 0 {app => src}/ldap_protocol/session_storage/base.py | 0 {app => src}/ldap_protocol/session_storage/exceptions.py | 0 {app => src}/ldap_protocol/session_storage/redis.py | 0 {app => src}/ldap_protocol/session_storage/repository.py | 0 {app => src}/ldap_protocol/udp_server.py | 0 {app => src}/ldap_protocol/user_account_control.py | 0 {app => src}/ldap_protocol/utils/__init__.py | 0 {app => src}/ldap_protocol/utils/async_cache.py | 0 {app => src}/ldap_protocol/utils/const.py | 0 {app => src}/ldap_protocol/utils/cte.py | 0 {app => src}/ldap_protocol/utils/helpers.py | 0 {app => src}/ldap_protocol/utils/pagination.py | 0 {app => src}/ldap_protocol/utils/queries.py | 0 {app => src}/ldap_protocol/utils/raw_definition_parser.py | 0 {app => src}/ldap_protocol/utils/udp.py | 0 {app => src}/logs/.gitignore | 0 {app => src}/multidirectory.py | 0 {app => src}/password_utils.py | 0 {app => src}/schedule.py | 0 296 files changed, 0 insertions(+), 0 deletions(-) rename {app => src}/__main__.py (100%) rename {app => src}/abstract_dao.py (100%) rename {app => src}/abstract_service.py (100%) rename {app => src}/alembic.ini (100%) rename {app => src}/alembic/README (100%) rename {app => src}/alembic/env.py (100%) rename {app => src}/alembic/script.py.mako (100%) rename {app => src}/alembic/versions/01f3f05a5b11_add_primary_group_id.py (100%) rename {app => src}/alembic/versions/05ddc0bd562a_add_roles.py (100%) rename {app => src}/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py (100%) rename {app => src}/alembic/versions/196f0d327c6a_.py (100%) rename {app => src}/alembic/versions/275222846605_initial_ldap_schema.py (100%) rename {app => src}/alembic/versions/35d1542d2505_add_entity_id.py (100%) rename {app => src}/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py (100%) rename {app => src}/alembic/versions/4334e2e871a4_add_sessions_ttl.py (100%) rename {app => src}/alembic/versions/4442d1d982a4_remove_krb_policy.py (100%) rename {app => src}/alembic/versions/4798b12b97aa_dedicated_servers.py (100%) rename {app => src}/alembic/versions/4e8772277cfe_add_web_permissions.py (100%) rename {app => src}/alembic/versions/56082d7ac0d4_remove_old_templates.py (100%) rename {app => src}/alembic/versions/59e98bbd8ad8_.py (100%) rename {app => src}/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py (100%) rename {app => src}/alembic/versions/692ae64e0cc5_.py (100%) mode change 100755 => 100644 rename {app => src}/alembic/versions/6c858cc05da7_add_default_admin_name.py (100%) rename {app => src}/alembic/versions/6f8fe2548893_fix_read_only.py (100%) rename {app => src}/alembic/versions/71e642808369_add_directory_is_system.py (100%) rename {app => src}/alembic/versions/8164b4a9e1f1_add_ou_computers.py (100%) rename {app => src}/alembic/versions/8c2bd40dd809_add_protocols_attr.py (100%) rename {app => src}/alembic/versions/93ba193c6a53_add_hash_index_on_dir_path.py (100%) rename {app => src}/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py (100%) rename {app => src}/alembic/versions/a7971f00ba4d_index_single_level.py (100%) rename {app => src}/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py (100%) rename {app => src}/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py (100%) rename {app => src}/alembic/versions/ba78cef9700a_initial_entity_type.py (100%) rename {app => src}/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py (100%) rename {app => src}/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py (100%) rename {app => src}/alembic/versions/c007129b7973_renew_sls_gpos_rsops.py (100%) rename {app => src}/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py (100%) rename {app => src}/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py (100%) rename {app => src}/alembic/versions/dafg3a4b22ab_add_preauth_princ.py (100%) rename {app => src}/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py (100%) rename {app => src}/alembic/versions/e4d6d99d32bd_add_audit_policies.py (100%) rename {app => src}/alembic/versions/ec45e3e8aa0f_drop_password_policy_id_column.py (100%) rename {app => src}/alembic/versions/eeaed5989eb0_group_policies.py (100%) rename {app => src}/alembic/versions/f1abf7ef2443_add_container_object_class.py (100%) rename {app => src}/alembic/versions/f24ed0e49df2_add_filter_anr.py (100%) rename {app => src}/alembic/versions/f4e6cd18a01d_add_samaccounttype.py (100%) rename {app => src}/alembic/versions/f68a134a3685_add_bypass.py (100%) rename {app => src}/alembic/versions/fafc3d0b11ec_.py (100%) rename {app => src}/alembic/versions/fc8b7617c60a_attr_index.py (100%) rename {app => src}/api/__init__.py (100%) rename {app => src}/api/audit/__init__.py (100%) rename {app => src}/api/audit/adapter.py (100%) rename {app => src}/api/audit/router.py (100%) rename {app => src}/api/auth/adapters/__init__.py (100%) rename {app => src}/api/auth/adapters/auth.py (100%) rename {app => src}/api/auth/adapters/mfa.py (100%) rename {app => src}/api/auth/adapters/session_gateway.py (100%) rename {app => src}/api/auth/router_auth.py (100%) rename {app => src}/api/auth/router_mfa.py (100%) rename {app => src}/api/auth/session_router.py (100%) rename {app => src}/api/auth/utils.py (100%) rename {app => src}/api/base_adapter.py (100%) rename {app => src}/api/dhcp/__init__.py (100%) rename {app => src}/api/dhcp/adapter.py (100%) rename {app => src}/api/dhcp/router.py (100%) rename {app => src}/api/error_routing.py (100%) rename {app => src}/api/exception_handlers.py (100%) rename {app => src}/api/ldap_schema/__init__.py (100%) rename {app => src}/api/ldap_schema/adapters/__init__.py (100%) rename {app => src}/api/ldap_schema/adapters/attribute_type.py (100%) rename {app => src}/api/ldap_schema/adapters/base_ldap_schema_adapter.py (100%) rename {app => src}/api/ldap_schema/adapters/entity_type.py (100%) rename {app => src}/api/ldap_schema/adapters/object_class.py (100%) rename {app => src}/api/ldap_schema/attribute_type_router.py (100%) rename {app => src}/api/ldap_schema/entity_type_router.py (100%) rename {app => src}/api/ldap_schema/object_class_router.py (100%) rename {app => src}/api/ldap_schema/schema.py (100%) rename {app => src}/api/main/__init__.py (100%) rename {app => src}/api/main/adapters/__init__.py (100%) rename {app => src}/api/main/adapters/dns.py (100%) rename {app => src}/api/main/adapters/kerberos.py (100%) rename {app => src}/api/main/dns_router.py (100%) rename {app => src}/api/main/krb5_router.py (100%) rename {app => src}/api/main/router.py (100%) rename {app => src}/api/main/schema.py (100%) rename {app => src}/api/main/utils.py (100%) rename {app => src}/api/middlewares.py (100%) rename {app => src}/api/network/__init__.py (100%) rename {app => src}/api/network/adapters/__init__.py (100%) rename {app => src}/api/network/adapters/network.py (100%) rename {app => src}/api/network/router.py (100%) rename {app => src}/api/network/schema.py (100%) rename {app => src}/api/network/utils.py (100%) rename {app => src}/api/password_policy/__init__.py (100%) rename {app => src}/api/password_policy/adapter.py (100%) rename {app => src}/api/password_policy/error_utils.py (100%) rename {app => src}/api/password_policy/password_ban_word_router.py (100%) rename {app => src}/api/password_policy/password_policy_router.py (100%) rename {app => src}/api/password_policy/schemas.py (100%) rename {app => src}/api/password_policy/user_password_history_router.py (100%) rename {app => src}/api/shadow/__init__.py (100%) rename {app => src}/api/shadow/adapter.py (100%) rename {app => src}/api/shadow/router.py (100%) rename {app => src}/api/utils.py (100%) rename {app => src}/authorization_provider_protocol.py (100%) rename {app => src}/config.py (100%) rename {app => src}/constants.py (100%) rename {app => src}/db_routing.py (100%) rename {app => src}/entities.py (100%) rename {app => src}/enums.py (100%) rename {app => src}/errors/__init__.py (100%) rename {app => src}/errors/base.py (100%) rename {app => src}/extra/__init__.py (100%) rename {app => src}/extra/alembic_utils.py (100%) rename {app => src}/extra/common_passwords.txt (100%) rename {app => src}/extra/dump_acme_certs.py (100%) rename {app => src}/extra/generate_cert.sh (100%) mode change 100755 => 100644 rename {app => src}/extra/scripts/__init__.py (100%) rename {app => src}/extra/scripts/check_ldap_principal.py (100%) rename {app => src}/extra/scripts/principal_block_user_sync.py (100%) rename {app => src}/extra/scripts/uac_sync.py (100%) rename {app => src}/extra/scripts/update_admin_permissions.py (100%) rename {app => src}/extra/scripts/update_krb5_config.py (100%) rename {app => src}/extra/scripts/update_status_proccess_events.py (100%) rename {app => src}/extra/templates/kdc.conf (100%) rename {app => src}/extra/templates/krb5.conf (100%) rename {app => src}/infrastructure/__init__.py (100%) rename {app => src}/infrastructure/pg/__init__.py (100%) rename {app => src}/infrastructure/pg/master_gateway.py (100%) rename {app => src}/infrastructure/pg/tables.py (100%) rename {app => src}/infrastructure/pg/types.py (100%) rename {app => src}/ioc.py (100%) rename {app => src}/ldap_protocol/__init__.py (100%) rename {app => src}/ldap_protocol/asn1parser.py (100%) rename {app => src}/ldap_protocol/auth/__init__.py (100%) rename {app => src}/ldap_protocol/auth/auth_manager.py (100%) rename {app => src}/ldap_protocol/auth/dto.py (100%) rename {app => src}/ldap_protocol/auth/exceptions/__init__.py (100%) rename {app => src}/ldap_protocol/auth/exceptions/mfa.py (100%) rename {app => src}/ldap_protocol/auth/mfa_manager.py (100%) rename {app => src}/ldap_protocol/auth/schemas.py (100%) rename {app => src}/ldap_protocol/auth/setup_gateway.py (100%) rename {app => src}/ldap_protocol/auth/use_cases.py (100%) rename {app => src}/ldap_protocol/auth/utils.py (100%) rename {app => src}/ldap_protocol/custom_requests/__init__.py (100%) rename {app => src}/ldap_protocol/custom_requests/rename.py (100%) rename {app => src}/ldap_protocol/data_logger.py (100%) rename {app => src}/ldap_protocol/dependency.py (100%) rename {app => src}/ldap_protocol/dhcp/__init__.py (100%) rename {app => src}/ldap_protocol/dhcp/base.py (100%) rename {app => src}/ldap_protocol/dhcp/dataclasses.py (100%) rename {app => src}/ldap_protocol/dhcp/dhcp_manager_repository.py (100%) rename {app => src}/ldap_protocol/dhcp/enums.py (100%) rename {app => src}/ldap_protocol/dhcp/exceptions.py (100%) rename {app => src}/ldap_protocol/dhcp/kea_dhcp_manager.py (100%) rename {app => src}/ldap_protocol/dhcp/kea_dhcp_repository.py (100%) rename {app => src}/ldap_protocol/dhcp/retorts.py (100%) rename {app => src}/ldap_protocol/dhcp/schemas.py (100%) rename {app => src}/ldap_protocol/dhcp/stub.py (100%) rename {app => src}/ldap_protocol/dhcp/utils.py (100%) rename {app => src}/ldap_protocol/dialogue.py (100%) rename {app => src}/ldap_protocol/dns/__init__.py (100%) rename {app => src}/ldap_protocol/dns/base.py (100%) rename {app => src}/ldap_protocol/dns/dns_gateway.py (100%) rename {app => src}/ldap_protocol/dns/dto.py (100%) rename {app => src}/ldap_protocol/dns/exceptions.py (100%) rename {app => src}/ldap_protocol/dns/remote.py (100%) rename {app => src}/ldap_protocol/dns/selfhosted.py (100%) rename {app => src}/ldap_protocol/dns/stub.py (100%) rename {app => src}/ldap_protocol/dns/use_cases.py (100%) rename {app => src}/ldap_protocol/dns/utils.py (100%) rename {app => src}/ldap_protocol/filter_interpreter.py (100%) rename {app => src}/ldap_protocol/identity/__init__.py (100%) rename {app => src}/ldap_protocol/identity/exceptions.py (100%) rename {app => src}/ldap_protocol/identity/provider.py (100%) rename {app => src}/ldap_protocol/identity/provider_gateway.py (100%) rename {app => src}/ldap_protocol/identity/utils.py (100%) rename {app => src}/ldap_protocol/kerberos/__init__.py (100%) rename {app => src}/ldap_protocol/kerberos/base.py (100%) rename {app => src}/ldap_protocol/kerberos/client.py (100%) rename {app => src}/ldap_protocol/kerberos/exceptions.py (100%) rename {app => src}/ldap_protocol/kerberos/ldap_structure.py (100%) rename {app => src}/ldap_protocol/kerberos/schemas.py (100%) rename {app => src}/ldap_protocol/kerberos/service.py (100%) rename {app => src}/ldap_protocol/kerberos/stub.py (100%) rename {app => src}/ldap_protocol/kerberos/template_render.py (100%) rename {app => src}/ldap_protocol/kerberos/utils.py (100%) rename {app => src}/ldap_protocol/ldap_codes.py (100%) rename {app => src}/ldap_protocol/ldap_requests/__init__.py (100%) rename {app => src}/ldap_protocol/ldap_requests/abandon.py (100%) rename {app => src}/ldap_protocol/ldap_requests/add.py (100%) rename {app => src}/ldap_protocol/ldap_requests/base.py (100%) rename {app => src}/ldap_protocol/ldap_requests/bind.py (100%) rename {app => src}/ldap_protocol/ldap_requests/bind_methods/__init__.py (100%) rename {app => src}/ldap_protocol/ldap_requests/bind_methods/base.py (100%) rename {app => src}/ldap_protocol/ldap_requests/bind_methods/sasl_gssapi.py (100%) rename {app => src}/ldap_protocol/ldap_requests/bind_methods/sasl_plain.py (100%) rename {app => src}/ldap_protocol/ldap_requests/bind_methods/sasl_spnego.py (100%) rename {app => src}/ldap_protocol/ldap_requests/bind_methods/simple.py (100%) rename {app => src}/ldap_protocol/ldap_requests/compare.py (100%) rename {app => src}/ldap_protocol/ldap_requests/contexts.py (100%) rename {app => src}/ldap_protocol/ldap_requests/delete.py (100%) rename {app => src}/ldap_protocol/ldap_requests/exceptions.py (100%) rename {app => src}/ldap_protocol/ldap_requests/extended.py (100%) rename {app => src}/ldap_protocol/ldap_requests/modify.py (100%) rename {app => src}/ldap_protocol/ldap_requests/modify_dn.py (100%) rename {app => src}/ldap_protocol/ldap_requests/search.py (100%) rename {app => src}/ldap_protocol/ldap_responses.py (100%) rename {app => src}/ldap_protocol/ldap_schema/__init__.py (100%) rename {app => src}/ldap_protocol/ldap_schema/attribute_type_dao.py (100%) rename {app => src}/ldap_protocol/ldap_schema/attribute_type_use_case.py (100%) rename {app => src}/ldap_protocol/ldap_schema/attribute_value_validator.py (100%) rename {app => src}/ldap_protocol/ldap_schema/constants.py (100%) rename {app => src}/ldap_protocol/ldap_schema/dto.py (100%) rename {app => src}/ldap_protocol/ldap_schema/entity_type_dao.py (100%) rename {app => src}/ldap_protocol/ldap_schema/entity_type_use_case.py (100%) rename {app => src}/ldap_protocol/ldap_schema/exceptions.py (100%) rename {app => src}/ldap_protocol/ldap_schema/object_class_dao.py (100%) rename {app => src}/ldap_protocol/ldap_schema/object_class_use_case.py (100%) rename {app => src}/ldap_protocol/master_check_use_case.py (100%) rename {app => src}/ldap_protocol/messages.py (100%) rename {app => src}/ldap_protocol/multifactor.py (100%) rename {app => src}/ldap_protocol/objects.py (100%) rename {app => src}/ldap_protocol/permissions_checker.py (100%) rename {app => src}/ldap_protocol/policies/__init__.py (100%) rename {app => src}/ldap_protocol/policies/audit/__init__.py (100%) rename {app => src}/ldap_protocol/policies/audit/audit_use_case.py (100%) rename {app => src}/ldap_protocol/policies/audit/dataclasses.py (100%) rename {app => src}/ldap_protocol/policies/audit/destination_dao.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/__init__.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/dataclasses.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/factory.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/handler.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/managers.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/normalizer.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/sender.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/service_senders/__init__.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/service_senders/base.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/service_senders/rfc5424_serializer.py (100%) rename {app => src}/ldap_protocol/policies/audit/events/service_senders/syslog.py (100%) rename {app => src}/ldap_protocol/policies/audit/exception.py (100%) rename {app => src}/ldap_protocol/policies/audit/monitor.py (100%) rename {app => src}/ldap_protocol/policies/audit/policies_dao.py (100%) rename {app => src}/ldap_protocol/policies/audit/schemas.py (100%) rename {app => src}/ldap_protocol/policies/audit/service.py (100%) rename {app => src}/ldap_protocol/policies/network/__init__.py (100%) rename {app => src}/ldap_protocol/policies/network/dto.py (100%) rename {app => src}/ldap_protocol/policies/network/exceptions.py (100%) rename {app => src}/ldap_protocol/policies/network/gateway.py (100%) rename {app => src}/ldap_protocol/policies/network/use_cases.py (100%) rename {app => src}/ldap_protocol/policies/network/validator_gateway.py (100%) rename {app => src}/ldap_protocol/policies/network/validator_protocol.py (100%) rename {app => src}/ldap_protocol/policies/password/__init__.py (100%) rename {app => src}/ldap_protocol/policies/password/ban_word_repository.py (100%) rename {app => src}/ldap_protocol/policies/password/constants.py (100%) rename {app => src}/ldap_protocol/policies/password/dao.py (100%) rename {app => src}/ldap_protocol/policies/password/dataclasses.py (100%) rename {app => src}/ldap_protocol/policies/password/error_messages.py (100%) rename {app => src}/ldap_protocol/policies/password/exceptions.py (100%) rename {app => src}/ldap_protocol/policies/password/settings.py (100%) rename {app => src}/ldap_protocol/policies/password/use_cases.py (100%) rename {app => src}/ldap_protocol/policies/password/validator.py (100%) rename {app => src}/ldap_protocol/roles/__init__.py (100%) rename {app => src}/ldap_protocol/roles/access_manager.py (100%) rename {app => src}/ldap_protocol/roles/ace_dao.py (100%) rename {app => src}/ldap_protocol/roles/dataclasses.py (100%) rename {app => src}/ldap_protocol/roles/exceptions.py (100%) rename {app => src}/ldap_protocol/roles/role_dao.py (100%) rename {app => src}/ldap_protocol/roles/role_use_case.py (100%) rename {app => src}/ldap_protocol/rootdse/__init__.py (100%) rename {app => src}/ldap_protocol/rootdse/dto.py (100%) rename {app => src}/ldap_protocol/rootdse/gateway.py (100%) rename {app => src}/ldap_protocol/rootdse/gw_protocol.py (100%) rename {app => src}/ldap_protocol/rootdse/netlogon.py (100%) rename {app => src}/ldap_protocol/rootdse/reader.py (100%) rename {app => src}/ldap_protocol/server.py (100%) rename {app => src}/ldap_protocol/session_storage/__init__.py (100%) rename {app => src}/ldap_protocol/session_storage/base.py (100%) rename {app => src}/ldap_protocol/session_storage/exceptions.py (100%) rename {app => src}/ldap_protocol/session_storage/redis.py (100%) rename {app => src}/ldap_protocol/session_storage/repository.py (100%) rename {app => src}/ldap_protocol/udp_server.py (100%) rename {app => src}/ldap_protocol/user_account_control.py (100%) rename {app => src}/ldap_protocol/utils/__init__.py (100%) rename {app => src}/ldap_protocol/utils/async_cache.py (100%) rename {app => src}/ldap_protocol/utils/const.py (100%) rename {app => src}/ldap_protocol/utils/cte.py (100%) rename {app => src}/ldap_protocol/utils/helpers.py (100%) rename {app => src}/ldap_protocol/utils/pagination.py (100%) rename {app => src}/ldap_protocol/utils/queries.py (100%) rename {app => src}/ldap_protocol/utils/raw_definition_parser.py (100%) rename {app => src}/ldap_protocol/utils/udp.py (100%) rename {app => src}/logs/.gitignore (100%) rename {app => src}/multidirectory.py (100%) rename {app => src}/password_utils.py (100%) rename {app => src}/schedule.py (100%) diff --git a/app/__main__.py b/src/__main__.py similarity index 100% rename from app/__main__.py rename to src/__main__.py diff --git a/app/abstract_dao.py b/src/abstract_dao.py similarity index 100% rename from app/abstract_dao.py rename to src/abstract_dao.py diff --git a/app/abstract_service.py b/src/abstract_service.py similarity index 100% rename from app/abstract_service.py rename to src/abstract_service.py diff --git a/app/alembic.ini b/src/alembic.ini similarity index 100% rename from app/alembic.ini rename to src/alembic.ini diff --git a/app/alembic/README b/src/alembic/README similarity index 100% rename from app/alembic/README rename to src/alembic/README diff --git a/app/alembic/env.py b/src/alembic/env.py similarity index 100% rename from app/alembic/env.py rename to src/alembic/env.py diff --git a/app/alembic/script.py.mako b/src/alembic/script.py.mako similarity index 100% rename from app/alembic/script.py.mako rename to src/alembic/script.py.mako diff --git a/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py similarity index 100% rename from app/alembic/versions/01f3f05a5b11_add_primary_group_id.py rename to src/alembic/versions/01f3f05a5b11_add_primary_group_id.py diff --git a/app/alembic/versions/05ddc0bd562a_add_roles.py b/src/alembic/versions/05ddc0bd562a_add_roles.py similarity index 100% rename from app/alembic/versions/05ddc0bd562a_add_roles.py rename to src/alembic/versions/05ddc0bd562a_add_roles.py diff --git a/app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py b/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py similarity index 100% rename from app/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py rename to src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py diff --git a/app/alembic/versions/196f0d327c6a_.py b/src/alembic/versions/196f0d327c6a_.py similarity index 100% rename from app/alembic/versions/196f0d327c6a_.py rename to src/alembic/versions/196f0d327c6a_.py diff --git a/app/alembic/versions/275222846605_initial_ldap_schema.py b/src/alembic/versions/275222846605_initial_ldap_schema.py similarity index 100% rename from app/alembic/versions/275222846605_initial_ldap_schema.py rename to src/alembic/versions/275222846605_initial_ldap_schema.py diff --git a/app/alembic/versions/35d1542d2505_add_entity_id.py b/src/alembic/versions/35d1542d2505_add_entity_id.py similarity index 100% rename from app/alembic/versions/35d1542d2505_add_entity_id.py rename to src/alembic/versions/35d1542d2505_add_entity_id.py diff --git a/app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py b/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py similarity index 100% rename from app/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py rename to src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py diff --git a/app/alembic/versions/4334e2e871a4_add_sessions_ttl.py b/src/alembic/versions/4334e2e871a4_add_sessions_ttl.py similarity index 100% rename from app/alembic/versions/4334e2e871a4_add_sessions_ttl.py rename to src/alembic/versions/4334e2e871a4_add_sessions_ttl.py diff --git a/app/alembic/versions/4442d1d982a4_remove_krb_policy.py b/src/alembic/versions/4442d1d982a4_remove_krb_policy.py similarity index 100% rename from app/alembic/versions/4442d1d982a4_remove_krb_policy.py rename to src/alembic/versions/4442d1d982a4_remove_krb_policy.py diff --git a/app/alembic/versions/4798b12b97aa_dedicated_servers.py b/src/alembic/versions/4798b12b97aa_dedicated_servers.py similarity index 100% rename from app/alembic/versions/4798b12b97aa_dedicated_servers.py rename to src/alembic/versions/4798b12b97aa_dedicated_servers.py diff --git a/app/alembic/versions/4e8772277cfe_add_web_permissions.py b/src/alembic/versions/4e8772277cfe_add_web_permissions.py similarity index 100% rename from app/alembic/versions/4e8772277cfe_add_web_permissions.py rename to src/alembic/versions/4e8772277cfe_add_web_permissions.py diff --git a/app/alembic/versions/56082d7ac0d4_remove_old_templates.py b/src/alembic/versions/56082d7ac0d4_remove_old_templates.py similarity index 100% rename from app/alembic/versions/56082d7ac0d4_remove_old_templates.py rename to src/alembic/versions/56082d7ac0d4_remove_old_templates.py diff --git a/app/alembic/versions/59e98bbd8ad8_.py b/src/alembic/versions/59e98bbd8ad8_.py similarity index 100% rename from app/alembic/versions/59e98bbd8ad8_.py rename to src/alembic/versions/59e98bbd8ad8_.py diff --git a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py similarity index 100% rename from app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py rename to src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py diff --git a/app/alembic/versions/692ae64e0cc5_.py b/src/alembic/versions/692ae64e0cc5_.py old mode 100755 new mode 100644 similarity index 100% rename from app/alembic/versions/692ae64e0cc5_.py rename to src/alembic/versions/692ae64e0cc5_.py diff --git a/app/alembic/versions/6c858cc05da7_add_default_admin_name.py b/src/alembic/versions/6c858cc05da7_add_default_admin_name.py similarity index 100% rename from app/alembic/versions/6c858cc05da7_add_default_admin_name.py rename to src/alembic/versions/6c858cc05da7_add_default_admin_name.py diff --git a/app/alembic/versions/6f8fe2548893_fix_read_only.py b/src/alembic/versions/6f8fe2548893_fix_read_only.py similarity index 100% rename from app/alembic/versions/6f8fe2548893_fix_read_only.py rename to src/alembic/versions/6f8fe2548893_fix_read_only.py diff --git a/app/alembic/versions/71e642808369_add_directory_is_system.py b/src/alembic/versions/71e642808369_add_directory_is_system.py similarity index 100% rename from app/alembic/versions/71e642808369_add_directory_is_system.py rename to src/alembic/versions/71e642808369_add_directory_is_system.py diff --git a/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py similarity index 100% rename from app/alembic/versions/8164b4a9e1f1_add_ou_computers.py rename to src/alembic/versions/8164b4a9e1f1_add_ou_computers.py diff --git a/app/alembic/versions/8c2bd40dd809_add_protocols_attr.py b/src/alembic/versions/8c2bd40dd809_add_protocols_attr.py similarity index 100% rename from app/alembic/versions/8c2bd40dd809_add_protocols_attr.py rename to src/alembic/versions/8c2bd40dd809_add_protocols_attr.py diff --git a/app/alembic/versions/93ba193c6a53_add_hash_index_on_dir_path.py b/src/alembic/versions/93ba193c6a53_add_hash_index_on_dir_path.py similarity index 100% rename from app/alembic/versions/93ba193c6a53_add_hash_index_on_dir_path.py rename to src/alembic/versions/93ba193c6a53_add_hash_index_on_dir_path.py diff --git a/app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py b/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py similarity index 100% rename from app/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py rename to src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py diff --git a/app/alembic/versions/a7971f00ba4d_index_single_level.py b/src/alembic/versions/a7971f00ba4d_index_single_level.py similarity index 100% rename from app/alembic/versions/a7971f00ba4d_index_single_level.py rename to src/alembic/versions/a7971f00ba4d_index_single_level.py diff --git a/app/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py b/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py similarity index 100% rename from app/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py rename to src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py diff --git a/app/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py similarity index 100% rename from app/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py rename to src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py diff --git a/app/alembic/versions/ba78cef9700a_initial_entity_type.py b/src/alembic/versions/ba78cef9700a_initial_entity_type.py similarity index 100% rename from app/alembic/versions/ba78cef9700a_initial_entity_type.py rename to src/alembic/versions/ba78cef9700a_initial_entity_type.py diff --git a/app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py b/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py similarity index 100% rename from app/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py rename to src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py diff --git a/app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py b/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py similarity index 100% rename from app/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py rename to src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py diff --git a/app/alembic/versions/c007129b7973_renew_sls_gpos_rsops.py b/src/alembic/versions/c007129b7973_renew_sls_gpos_rsops.py similarity index 100% rename from app/alembic/versions/c007129b7973_renew_sls_gpos_rsops.py rename to src/alembic/versions/c007129b7973_renew_sls_gpos_rsops.py diff --git a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py similarity index 100% rename from app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py rename to src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py diff --git a/app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py similarity index 100% rename from app/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py rename to src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py diff --git a/app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py similarity index 100% rename from app/alembic/versions/dafg3a4b22ab_add_preauth_princ.py rename to src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py diff --git a/app/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py similarity index 100% rename from app/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py rename to src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py diff --git a/app/alembic/versions/e4d6d99d32bd_add_audit_policies.py b/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py similarity index 100% rename from app/alembic/versions/e4d6d99d32bd_add_audit_policies.py rename to src/alembic/versions/e4d6d99d32bd_add_audit_policies.py diff --git a/app/alembic/versions/ec45e3e8aa0f_drop_password_policy_id_column.py b/src/alembic/versions/ec45e3e8aa0f_drop_password_policy_id_column.py similarity index 100% rename from app/alembic/versions/ec45e3e8aa0f_drop_password_policy_id_column.py rename to src/alembic/versions/ec45e3e8aa0f_drop_password_policy_id_column.py diff --git a/app/alembic/versions/eeaed5989eb0_group_policies.py b/src/alembic/versions/eeaed5989eb0_group_policies.py similarity index 100% rename from app/alembic/versions/eeaed5989eb0_group_policies.py rename to src/alembic/versions/eeaed5989eb0_group_policies.py diff --git a/app/alembic/versions/f1abf7ef2443_add_container_object_class.py b/src/alembic/versions/f1abf7ef2443_add_container_object_class.py similarity index 100% rename from app/alembic/versions/f1abf7ef2443_add_container_object_class.py rename to src/alembic/versions/f1abf7ef2443_add_container_object_class.py diff --git a/app/alembic/versions/f24ed0e49df2_add_filter_anr.py b/src/alembic/versions/f24ed0e49df2_add_filter_anr.py similarity index 100% rename from app/alembic/versions/f24ed0e49df2_add_filter_anr.py rename to src/alembic/versions/f24ed0e49df2_add_filter_anr.py diff --git a/app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py b/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py similarity index 100% rename from app/alembic/versions/f4e6cd18a01d_add_samaccounttype.py rename to src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py diff --git a/app/alembic/versions/f68a134a3685_add_bypass.py b/src/alembic/versions/f68a134a3685_add_bypass.py similarity index 100% rename from app/alembic/versions/f68a134a3685_add_bypass.py rename to src/alembic/versions/f68a134a3685_add_bypass.py diff --git a/app/alembic/versions/fafc3d0b11ec_.py b/src/alembic/versions/fafc3d0b11ec_.py similarity index 100% rename from app/alembic/versions/fafc3d0b11ec_.py rename to src/alembic/versions/fafc3d0b11ec_.py diff --git a/app/alembic/versions/fc8b7617c60a_attr_index.py b/src/alembic/versions/fc8b7617c60a_attr_index.py similarity index 100% rename from app/alembic/versions/fc8b7617c60a_attr_index.py rename to src/alembic/versions/fc8b7617c60a_attr_index.py diff --git a/app/api/__init__.py b/src/api/__init__.py similarity index 100% rename from app/api/__init__.py rename to src/api/__init__.py diff --git a/app/api/audit/__init__.py b/src/api/audit/__init__.py similarity index 100% rename from app/api/audit/__init__.py rename to src/api/audit/__init__.py diff --git a/app/api/audit/adapter.py b/src/api/audit/adapter.py similarity index 100% rename from app/api/audit/adapter.py rename to src/api/audit/adapter.py diff --git a/app/api/audit/router.py b/src/api/audit/router.py similarity index 100% rename from app/api/audit/router.py rename to src/api/audit/router.py diff --git a/app/api/auth/adapters/__init__.py b/src/api/auth/adapters/__init__.py similarity index 100% rename from app/api/auth/adapters/__init__.py rename to src/api/auth/adapters/__init__.py diff --git a/app/api/auth/adapters/auth.py b/src/api/auth/adapters/auth.py similarity index 100% rename from app/api/auth/adapters/auth.py rename to src/api/auth/adapters/auth.py diff --git a/app/api/auth/adapters/mfa.py b/src/api/auth/adapters/mfa.py similarity index 100% rename from app/api/auth/adapters/mfa.py rename to src/api/auth/adapters/mfa.py diff --git a/app/api/auth/adapters/session_gateway.py b/src/api/auth/adapters/session_gateway.py similarity index 100% rename from app/api/auth/adapters/session_gateway.py rename to src/api/auth/adapters/session_gateway.py diff --git a/app/api/auth/router_auth.py b/src/api/auth/router_auth.py similarity index 100% rename from app/api/auth/router_auth.py rename to src/api/auth/router_auth.py diff --git a/app/api/auth/router_mfa.py b/src/api/auth/router_mfa.py similarity index 100% rename from app/api/auth/router_mfa.py rename to src/api/auth/router_mfa.py diff --git a/app/api/auth/session_router.py b/src/api/auth/session_router.py similarity index 100% rename from app/api/auth/session_router.py rename to src/api/auth/session_router.py diff --git a/app/api/auth/utils.py b/src/api/auth/utils.py similarity index 100% rename from app/api/auth/utils.py rename to src/api/auth/utils.py diff --git a/app/api/base_adapter.py b/src/api/base_adapter.py similarity index 100% rename from app/api/base_adapter.py rename to src/api/base_adapter.py diff --git a/app/api/dhcp/__init__.py b/src/api/dhcp/__init__.py similarity index 100% rename from app/api/dhcp/__init__.py rename to src/api/dhcp/__init__.py diff --git a/app/api/dhcp/adapter.py b/src/api/dhcp/adapter.py similarity index 100% rename from app/api/dhcp/adapter.py rename to src/api/dhcp/adapter.py diff --git a/app/api/dhcp/router.py b/src/api/dhcp/router.py similarity index 100% rename from app/api/dhcp/router.py rename to src/api/dhcp/router.py diff --git a/app/api/error_routing.py b/src/api/error_routing.py similarity index 100% rename from app/api/error_routing.py rename to src/api/error_routing.py diff --git a/app/api/exception_handlers.py b/src/api/exception_handlers.py similarity index 100% rename from app/api/exception_handlers.py rename to src/api/exception_handlers.py diff --git a/app/api/ldap_schema/__init__.py b/src/api/ldap_schema/__init__.py similarity index 100% rename from app/api/ldap_schema/__init__.py rename to src/api/ldap_schema/__init__.py diff --git a/app/api/ldap_schema/adapters/__init__.py b/src/api/ldap_schema/adapters/__init__.py similarity index 100% rename from app/api/ldap_schema/adapters/__init__.py rename to src/api/ldap_schema/adapters/__init__.py diff --git a/app/api/ldap_schema/adapters/attribute_type.py b/src/api/ldap_schema/adapters/attribute_type.py similarity index 100% rename from app/api/ldap_schema/adapters/attribute_type.py rename to src/api/ldap_schema/adapters/attribute_type.py diff --git a/app/api/ldap_schema/adapters/base_ldap_schema_adapter.py b/src/api/ldap_schema/adapters/base_ldap_schema_adapter.py similarity index 100% rename from app/api/ldap_schema/adapters/base_ldap_schema_adapter.py rename to src/api/ldap_schema/adapters/base_ldap_schema_adapter.py diff --git a/app/api/ldap_schema/adapters/entity_type.py b/src/api/ldap_schema/adapters/entity_type.py similarity index 100% rename from app/api/ldap_schema/adapters/entity_type.py rename to src/api/ldap_schema/adapters/entity_type.py diff --git a/app/api/ldap_schema/adapters/object_class.py b/src/api/ldap_schema/adapters/object_class.py similarity index 100% rename from app/api/ldap_schema/adapters/object_class.py rename to src/api/ldap_schema/adapters/object_class.py diff --git a/app/api/ldap_schema/attribute_type_router.py b/src/api/ldap_schema/attribute_type_router.py similarity index 100% rename from app/api/ldap_schema/attribute_type_router.py rename to src/api/ldap_schema/attribute_type_router.py diff --git a/app/api/ldap_schema/entity_type_router.py b/src/api/ldap_schema/entity_type_router.py similarity index 100% rename from app/api/ldap_schema/entity_type_router.py rename to src/api/ldap_schema/entity_type_router.py diff --git a/app/api/ldap_schema/object_class_router.py b/src/api/ldap_schema/object_class_router.py similarity index 100% rename from app/api/ldap_schema/object_class_router.py rename to src/api/ldap_schema/object_class_router.py diff --git a/app/api/ldap_schema/schema.py b/src/api/ldap_schema/schema.py similarity index 100% rename from app/api/ldap_schema/schema.py rename to src/api/ldap_schema/schema.py diff --git a/app/api/main/__init__.py b/src/api/main/__init__.py similarity index 100% rename from app/api/main/__init__.py rename to src/api/main/__init__.py diff --git a/app/api/main/adapters/__init__.py b/src/api/main/adapters/__init__.py similarity index 100% rename from app/api/main/adapters/__init__.py rename to src/api/main/adapters/__init__.py diff --git a/app/api/main/adapters/dns.py b/src/api/main/adapters/dns.py similarity index 100% rename from app/api/main/adapters/dns.py rename to src/api/main/adapters/dns.py diff --git a/app/api/main/adapters/kerberos.py b/src/api/main/adapters/kerberos.py similarity index 100% rename from app/api/main/adapters/kerberos.py rename to src/api/main/adapters/kerberos.py diff --git a/app/api/main/dns_router.py b/src/api/main/dns_router.py similarity index 100% rename from app/api/main/dns_router.py rename to src/api/main/dns_router.py diff --git a/app/api/main/krb5_router.py b/src/api/main/krb5_router.py similarity index 100% rename from app/api/main/krb5_router.py rename to src/api/main/krb5_router.py diff --git a/app/api/main/router.py b/src/api/main/router.py similarity index 100% rename from app/api/main/router.py rename to src/api/main/router.py diff --git a/app/api/main/schema.py b/src/api/main/schema.py similarity index 100% rename from app/api/main/schema.py rename to src/api/main/schema.py diff --git a/app/api/main/utils.py b/src/api/main/utils.py similarity index 100% rename from app/api/main/utils.py rename to src/api/main/utils.py diff --git a/app/api/middlewares.py b/src/api/middlewares.py similarity index 100% rename from app/api/middlewares.py rename to src/api/middlewares.py diff --git a/app/api/network/__init__.py b/src/api/network/__init__.py similarity index 100% rename from app/api/network/__init__.py rename to src/api/network/__init__.py diff --git a/app/api/network/adapters/__init__.py b/src/api/network/adapters/__init__.py similarity index 100% rename from app/api/network/adapters/__init__.py rename to src/api/network/adapters/__init__.py diff --git a/app/api/network/adapters/network.py b/src/api/network/adapters/network.py similarity index 100% rename from app/api/network/adapters/network.py rename to src/api/network/adapters/network.py diff --git a/app/api/network/router.py b/src/api/network/router.py similarity index 100% rename from app/api/network/router.py rename to src/api/network/router.py diff --git a/app/api/network/schema.py b/src/api/network/schema.py similarity index 100% rename from app/api/network/schema.py rename to src/api/network/schema.py diff --git a/app/api/network/utils.py b/src/api/network/utils.py similarity index 100% rename from app/api/network/utils.py rename to src/api/network/utils.py diff --git a/app/api/password_policy/__init__.py b/src/api/password_policy/__init__.py similarity index 100% rename from app/api/password_policy/__init__.py rename to src/api/password_policy/__init__.py diff --git a/app/api/password_policy/adapter.py b/src/api/password_policy/adapter.py similarity index 100% rename from app/api/password_policy/adapter.py rename to src/api/password_policy/adapter.py diff --git a/app/api/password_policy/error_utils.py b/src/api/password_policy/error_utils.py similarity index 100% rename from app/api/password_policy/error_utils.py rename to src/api/password_policy/error_utils.py diff --git a/app/api/password_policy/password_ban_word_router.py b/src/api/password_policy/password_ban_word_router.py similarity index 100% rename from app/api/password_policy/password_ban_word_router.py rename to src/api/password_policy/password_ban_word_router.py diff --git a/app/api/password_policy/password_policy_router.py b/src/api/password_policy/password_policy_router.py similarity index 100% rename from app/api/password_policy/password_policy_router.py rename to src/api/password_policy/password_policy_router.py diff --git a/app/api/password_policy/schemas.py b/src/api/password_policy/schemas.py similarity index 100% rename from app/api/password_policy/schemas.py rename to src/api/password_policy/schemas.py diff --git a/app/api/password_policy/user_password_history_router.py b/src/api/password_policy/user_password_history_router.py similarity index 100% rename from app/api/password_policy/user_password_history_router.py rename to src/api/password_policy/user_password_history_router.py diff --git a/app/api/shadow/__init__.py b/src/api/shadow/__init__.py similarity index 100% rename from app/api/shadow/__init__.py rename to src/api/shadow/__init__.py diff --git a/app/api/shadow/adapter.py b/src/api/shadow/adapter.py similarity index 100% rename from app/api/shadow/adapter.py rename to src/api/shadow/adapter.py diff --git a/app/api/shadow/router.py b/src/api/shadow/router.py similarity index 100% rename from app/api/shadow/router.py rename to src/api/shadow/router.py diff --git a/app/api/utils.py b/src/api/utils.py similarity index 100% rename from app/api/utils.py rename to src/api/utils.py diff --git a/app/authorization_provider_protocol.py b/src/authorization_provider_protocol.py similarity index 100% rename from app/authorization_provider_protocol.py rename to src/authorization_provider_protocol.py diff --git a/app/config.py b/src/config.py similarity index 100% rename from app/config.py rename to src/config.py diff --git a/app/constants.py b/src/constants.py similarity index 100% rename from app/constants.py rename to src/constants.py diff --git a/app/db_routing.py b/src/db_routing.py similarity index 100% rename from app/db_routing.py rename to src/db_routing.py diff --git a/app/entities.py b/src/entities.py similarity index 100% rename from app/entities.py rename to src/entities.py diff --git a/app/enums.py b/src/enums.py similarity index 100% rename from app/enums.py rename to src/enums.py diff --git a/app/errors/__init__.py b/src/errors/__init__.py similarity index 100% rename from app/errors/__init__.py rename to src/errors/__init__.py diff --git a/app/errors/base.py b/src/errors/base.py similarity index 100% rename from app/errors/base.py rename to src/errors/base.py diff --git a/app/extra/__init__.py b/src/extra/__init__.py similarity index 100% rename from app/extra/__init__.py rename to src/extra/__init__.py diff --git a/app/extra/alembic_utils.py b/src/extra/alembic_utils.py similarity index 100% rename from app/extra/alembic_utils.py rename to src/extra/alembic_utils.py diff --git a/app/extra/common_passwords.txt b/src/extra/common_passwords.txt similarity index 100% rename from app/extra/common_passwords.txt rename to src/extra/common_passwords.txt diff --git a/app/extra/dump_acme_certs.py b/src/extra/dump_acme_certs.py similarity index 100% rename from app/extra/dump_acme_certs.py rename to src/extra/dump_acme_certs.py diff --git a/app/extra/generate_cert.sh b/src/extra/generate_cert.sh old mode 100755 new mode 100644 similarity index 100% rename from app/extra/generate_cert.sh rename to src/extra/generate_cert.sh diff --git a/app/extra/scripts/__init__.py b/src/extra/scripts/__init__.py similarity index 100% rename from app/extra/scripts/__init__.py rename to src/extra/scripts/__init__.py diff --git a/app/extra/scripts/check_ldap_principal.py b/src/extra/scripts/check_ldap_principal.py similarity index 100% rename from app/extra/scripts/check_ldap_principal.py rename to src/extra/scripts/check_ldap_principal.py diff --git a/app/extra/scripts/principal_block_user_sync.py b/src/extra/scripts/principal_block_user_sync.py similarity index 100% rename from app/extra/scripts/principal_block_user_sync.py rename to src/extra/scripts/principal_block_user_sync.py diff --git a/app/extra/scripts/uac_sync.py b/src/extra/scripts/uac_sync.py similarity index 100% rename from app/extra/scripts/uac_sync.py rename to src/extra/scripts/uac_sync.py diff --git a/app/extra/scripts/update_admin_permissions.py b/src/extra/scripts/update_admin_permissions.py similarity index 100% rename from app/extra/scripts/update_admin_permissions.py rename to src/extra/scripts/update_admin_permissions.py diff --git a/app/extra/scripts/update_krb5_config.py b/src/extra/scripts/update_krb5_config.py similarity index 100% rename from app/extra/scripts/update_krb5_config.py rename to src/extra/scripts/update_krb5_config.py diff --git a/app/extra/scripts/update_status_proccess_events.py b/src/extra/scripts/update_status_proccess_events.py similarity index 100% rename from app/extra/scripts/update_status_proccess_events.py rename to src/extra/scripts/update_status_proccess_events.py diff --git a/app/extra/templates/kdc.conf b/src/extra/templates/kdc.conf similarity index 100% rename from app/extra/templates/kdc.conf rename to src/extra/templates/kdc.conf diff --git a/app/extra/templates/krb5.conf b/src/extra/templates/krb5.conf similarity index 100% rename from app/extra/templates/krb5.conf rename to src/extra/templates/krb5.conf diff --git a/app/infrastructure/__init__.py b/src/infrastructure/__init__.py similarity index 100% rename from app/infrastructure/__init__.py rename to src/infrastructure/__init__.py diff --git a/app/infrastructure/pg/__init__.py b/src/infrastructure/pg/__init__.py similarity index 100% rename from app/infrastructure/pg/__init__.py rename to src/infrastructure/pg/__init__.py diff --git a/app/infrastructure/pg/master_gateway.py b/src/infrastructure/pg/master_gateway.py similarity index 100% rename from app/infrastructure/pg/master_gateway.py rename to src/infrastructure/pg/master_gateway.py diff --git a/app/infrastructure/pg/tables.py b/src/infrastructure/pg/tables.py similarity index 100% rename from app/infrastructure/pg/tables.py rename to src/infrastructure/pg/tables.py diff --git a/app/infrastructure/pg/types.py b/src/infrastructure/pg/types.py similarity index 100% rename from app/infrastructure/pg/types.py rename to src/infrastructure/pg/types.py diff --git a/app/ioc.py b/src/ioc.py similarity index 100% rename from app/ioc.py rename to src/ioc.py diff --git a/app/ldap_protocol/__init__.py b/src/ldap_protocol/__init__.py similarity index 100% rename from app/ldap_protocol/__init__.py rename to src/ldap_protocol/__init__.py diff --git a/app/ldap_protocol/asn1parser.py b/src/ldap_protocol/asn1parser.py similarity index 100% rename from app/ldap_protocol/asn1parser.py rename to src/ldap_protocol/asn1parser.py diff --git a/app/ldap_protocol/auth/__init__.py b/src/ldap_protocol/auth/__init__.py similarity index 100% rename from app/ldap_protocol/auth/__init__.py rename to src/ldap_protocol/auth/__init__.py diff --git a/app/ldap_protocol/auth/auth_manager.py b/src/ldap_protocol/auth/auth_manager.py similarity index 100% rename from app/ldap_protocol/auth/auth_manager.py rename to src/ldap_protocol/auth/auth_manager.py diff --git a/app/ldap_protocol/auth/dto.py b/src/ldap_protocol/auth/dto.py similarity index 100% rename from app/ldap_protocol/auth/dto.py rename to src/ldap_protocol/auth/dto.py diff --git a/app/ldap_protocol/auth/exceptions/__init__.py b/src/ldap_protocol/auth/exceptions/__init__.py similarity index 100% rename from app/ldap_protocol/auth/exceptions/__init__.py rename to src/ldap_protocol/auth/exceptions/__init__.py diff --git a/app/ldap_protocol/auth/exceptions/mfa.py b/src/ldap_protocol/auth/exceptions/mfa.py similarity index 100% rename from app/ldap_protocol/auth/exceptions/mfa.py rename to src/ldap_protocol/auth/exceptions/mfa.py diff --git a/app/ldap_protocol/auth/mfa_manager.py b/src/ldap_protocol/auth/mfa_manager.py similarity index 100% rename from app/ldap_protocol/auth/mfa_manager.py rename to src/ldap_protocol/auth/mfa_manager.py diff --git a/app/ldap_protocol/auth/schemas.py b/src/ldap_protocol/auth/schemas.py similarity index 100% rename from app/ldap_protocol/auth/schemas.py rename to src/ldap_protocol/auth/schemas.py diff --git a/app/ldap_protocol/auth/setup_gateway.py b/src/ldap_protocol/auth/setup_gateway.py similarity index 100% rename from app/ldap_protocol/auth/setup_gateway.py rename to src/ldap_protocol/auth/setup_gateway.py diff --git a/app/ldap_protocol/auth/use_cases.py b/src/ldap_protocol/auth/use_cases.py similarity index 100% rename from app/ldap_protocol/auth/use_cases.py rename to src/ldap_protocol/auth/use_cases.py diff --git a/app/ldap_protocol/auth/utils.py b/src/ldap_protocol/auth/utils.py similarity index 100% rename from app/ldap_protocol/auth/utils.py rename to src/ldap_protocol/auth/utils.py diff --git a/app/ldap_protocol/custom_requests/__init__.py b/src/ldap_protocol/custom_requests/__init__.py similarity index 100% rename from app/ldap_protocol/custom_requests/__init__.py rename to src/ldap_protocol/custom_requests/__init__.py diff --git a/app/ldap_protocol/custom_requests/rename.py b/src/ldap_protocol/custom_requests/rename.py similarity index 100% rename from app/ldap_protocol/custom_requests/rename.py rename to src/ldap_protocol/custom_requests/rename.py diff --git a/app/ldap_protocol/data_logger.py b/src/ldap_protocol/data_logger.py similarity index 100% rename from app/ldap_protocol/data_logger.py rename to src/ldap_protocol/data_logger.py diff --git a/app/ldap_protocol/dependency.py b/src/ldap_protocol/dependency.py similarity index 100% rename from app/ldap_protocol/dependency.py rename to src/ldap_protocol/dependency.py diff --git a/app/ldap_protocol/dhcp/__init__.py b/src/ldap_protocol/dhcp/__init__.py similarity index 100% rename from app/ldap_protocol/dhcp/__init__.py rename to src/ldap_protocol/dhcp/__init__.py diff --git a/app/ldap_protocol/dhcp/base.py b/src/ldap_protocol/dhcp/base.py similarity index 100% rename from app/ldap_protocol/dhcp/base.py rename to src/ldap_protocol/dhcp/base.py diff --git a/app/ldap_protocol/dhcp/dataclasses.py b/src/ldap_protocol/dhcp/dataclasses.py similarity index 100% rename from app/ldap_protocol/dhcp/dataclasses.py rename to src/ldap_protocol/dhcp/dataclasses.py diff --git a/app/ldap_protocol/dhcp/dhcp_manager_repository.py b/src/ldap_protocol/dhcp/dhcp_manager_repository.py similarity index 100% rename from app/ldap_protocol/dhcp/dhcp_manager_repository.py rename to src/ldap_protocol/dhcp/dhcp_manager_repository.py diff --git a/app/ldap_protocol/dhcp/enums.py b/src/ldap_protocol/dhcp/enums.py similarity index 100% rename from app/ldap_protocol/dhcp/enums.py rename to src/ldap_protocol/dhcp/enums.py diff --git a/app/ldap_protocol/dhcp/exceptions.py b/src/ldap_protocol/dhcp/exceptions.py similarity index 100% rename from app/ldap_protocol/dhcp/exceptions.py rename to src/ldap_protocol/dhcp/exceptions.py diff --git a/app/ldap_protocol/dhcp/kea_dhcp_manager.py b/src/ldap_protocol/dhcp/kea_dhcp_manager.py similarity index 100% rename from app/ldap_protocol/dhcp/kea_dhcp_manager.py rename to src/ldap_protocol/dhcp/kea_dhcp_manager.py diff --git a/app/ldap_protocol/dhcp/kea_dhcp_repository.py b/src/ldap_protocol/dhcp/kea_dhcp_repository.py similarity index 100% rename from app/ldap_protocol/dhcp/kea_dhcp_repository.py rename to src/ldap_protocol/dhcp/kea_dhcp_repository.py diff --git a/app/ldap_protocol/dhcp/retorts.py b/src/ldap_protocol/dhcp/retorts.py similarity index 100% rename from app/ldap_protocol/dhcp/retorts.py rename to src/ldap_protocol/dhcp/retorts.py diff --git a/app/ldap_protocol/dhcp/schemas.py b/src/ldap_protocol/dhcp/schemas.py similarity index 100% rename from app/ldap_protocol/dhcp/schemas.py rename to src/ldap_protocol/dhcp/schemas.py diff --git a/app/ldap_protocol/dhcp/stub.py b/src/ldap_protocol/dhcp/stub.py similarity index 100% rename from app/ldap_protocol/dhcp/stub.py rename to src/ldap_protocol/dhcp/stub.py diff --git a/app/ldap_protocol/dhcp/utils.py b/src/ldap_protocol/dhcp/utils.py similarity index 100% rename from app/ldap_protocol/dhcp/utils.py rename to src/ldap_protocol/dhcp/utils.py diff --git a/app/ldap_protocol/dialogue.py b/src/ldap_protocol/dialogue.py similarity index 100% rename from app/ldap_protocol/dialogue.py rename to src/ldap_protocol/dialogue.py diff --git a/app/ldap_protocol/dns/__init__.py b/src/ldap_protocol/dns/__init__.py similarity index 100% rename from app/ldap_protocol/dns/__init__.py rename to src/ldap_protocol/dns/__init__.py diff --git a/app/ldap_protocol/dns/base.py b/src/ldap_protocol/dns/base.py similarity index 100% rename from app/ldap_protocol/dns/base.py rename to src/ldap_protocol/dns/base.py diff --git a/app/ldap_protocol/dns/dns_gateway.py b/src/ldap_protocol/dns/dns_gateway.py similarity index 100% rename from app/ldap_protocol/dns/dns_gateway.py rename to src/ldap_protocol/dns/dns_gateway.py diff --git a/app/ldap_protocol/dns/dto.py b/src/ldap_protocol/dns/dto.py similarity index 100% rename from app/ldap_protocol/dns/dto.py rename to src/ldap_protocol/dns/dto.py diff --git a/app/ldap_protocol/dns/exceptions.py b/src/ldap_protocol/dns/exceptions.py similarity index 100% rename from app/ldap_protocol/dns/exceptions.py rename to src/ldap_protocol/dns/exceptions.py diff --git a/app/ldap_protocol/dns/remote.py b/src/ldap_protocol/dns/remote.py similarity index 100% rename from app/ldap_protocol/dns/remote.py rename to src/ldap_protocol/dns/remote.py diff --git a/app/ldap_protocol/dns/selfhosted.py b/src/ldap_protocol/dns/selfhosted.py similarity index 100% rename from app/ldap_protocol/dns/selfhosted.py rename to src/ldap_protocol/dns/selfhosted.py diff --git a/app/ldap_protocol/dns/stub.py b/src/ldap_protocol/dns/stub.py similarity index 100% rename from app/ldap_protocol/dns/stub.py rename to src/ldap_protocol/dns/stub.py diff --git a/app/ldap_protocol/dns/use_cases.py b/src/ldap_protocol/dns/use_cases.py similarity index 100% rename from app/ldap_protocol/dns/use_cases.py rename to src/ldap_protocol/dns/use_cases.py diff --git a/app/ldap_protocol/dns/utils.py b/src/ldap_protocol/dns/utils.py similarity index 100% rename from app/ldap_protocol/dns/utils.py rename to src/ldap_protocol/dns/utils.py diff --git a/app/ldap_protocol/filter_interpreter.py b/src/ldap_protocol/filter_interpreter.py similarity index 100% rename from app/ldap_protocol/filter_interpreter.py rename to src/ldap_protocol/filter_interpreter.py diff --git a/app/ldap_protocol/identity/__init__.py b/src/ldap_protocol/identity/__init__.py similarity index 100% rename from app/ldap_protocol/identity/__init__.py rename to src/ldap_protocol/identity/__init__.py diff --git a/app/ldap_protocol/identity/exceptions.py b/src/ldap_protocol/identity/exceptions.py similarity index 100% rename from app/ldap_protocol/identity/exceptions.py rename to src/ldap_protocol/identity/exceptions.py diff --git a/app/ldap_protocol/identity/provider.py b/src/ldap_protocol/identity/provider.py similarity index 100% rename from app/ldap_protocol/identity/provider.py rename to src/ldap_protocol/identity/provider.py diff --git a/app/ldap_protocol/identity/provider_gateway.py b/src/ldap_protocol/identity/provider_gateway.py similarity index 100% rename from app/ldap_protocol/identity/provider_gateway.py rename to src/ldap_protocol/identity/provider_gateway.py diff --git a/app/ldap_protocol/identity/utils.py b/src/ldap_protocol/identity/utils.py similarity index 100% rename from app/ldap_protocol/identity/utils.py rename to src/ldap_protocol/identity/utils.py diff --git a/app/ldap_protocol/kerberos/__init__.py b/src/ldap_protocol/kerberos/__init__.py similarity index 100% rename from app/ldap_protocol/kerberos/__init__.py rename to src/ldap_protocol/kerberos/__init__.py diff --git a/app/ldap_protocol/kerberos/base.py b/src/ldap_protocol/kerberos/base.py similarity index 100% rename from app/ldap_protocol/kerberos/base.py rename to src/ldap_protocol/kerberos/base.py diff --git a/app/ldap_protocol/kerberos/client.py b/src/ldap_protocol/kerberos/client.py similarity index 100% rename from app/ldap_protocol/kerberos/client.py rename to src/ldap_protocol/kerberos/client.py diff --git a/app/ldap_protocol/kerberos/exceptions.py b/src/ldap_protocol/kerberos/exceptions.py similarity index 100% rename from app/ldap_protocol/kerberos/exceptions.py rename to src/ldap_protocol/kerberos/exceptions.py diff --git a/app/ldap_protocol/kerberos/ldap_structure.py b/src/ldap_protocol/kerberos/ldap_structure.py similarity index 100% rename from app/ldap_protocol/kerberos/ldap_structure.py rename to src/ldap_protocol/kerberos/ldap_structure.py diff --git a/app/ldap_protocol/kerberos/schemas.py b/src/ldap_protocol/kerberos/schemas.py similarity index 100% rename from app/ldap_protocol/kerberos/schemas.py rename to src/ldap_protocol/kerberos/schemas.py diff --git a/app/ldap_protocol/kerberos/service.py b/src/ldap_protocol/kerberos/service.py similarity index 100% rename from app/ldap_protocol/kerberos/service.py rename to src/ldap_protocol/kerberos/service.py diff --git a/app/ldap_protocol/kerberos/stub.py b/src/ldap_protocol/kerberos/stub.py similarity index 100% rename from app/ldap_protocol/kerberos/stub.py rename to src/ldap_protocol/kerberos/stub.py diff --git a/app/ldap_protocol/kerberos/template_render.py b/src/ldap_protocol/kerberos/template_render.py similarity index 100% rename from app/ldap_protocol/kerberos/template_render.py rename to src/ldap_protocol/kerberos/template_render.py diff --git a/app/ldap_protocol/kerberos/utils.py b/src/ldap_protocol/kerberos/utils.py similarity index 100% rename from app/ldap_protocol/kerberos/utils.py rename to src/ldap_protocol/kerberos/utils.py diff --git a/app/ldap_protocol/ldap_codes.py b/src/ldap_protocol/ldap_codes.py similarity index 100% rename from app/ldap_protocol/ldap_codes.py rename to src/ldap_protocol/ldap_codes.py diff --git a/app/ldap_protocol/ldap_requests/__init__.py b/src/ldap_protocol/ldap_requests/__init__.py similarity index 100% rename from app/ldap_protocol/ldap_requests/__init__.py rename to src/ldap_protocol/ldap_requests/__init__.py diff --git a/app/ldap_protocol/ldap_requests/abandon.py b/src/ldap_protocol/ldap_requests/abandon.py similarity index 100% rename from app/ldap_protocol/ldap_requests/abandon.py rename to src/ldap_protocol/ldap_requests/abandon.py diff --git a/app/ldap_protocol/ldap_requests/add.py b/src/ldap_protocol/ldap_requests/add.py similarity index 100% rename from app/ldap_protocol/ldap_requests/add.py rename to src/ldap_protocol/ldap_requests/add.py diff --git a/app/ldap_protocol/ldap_requests/base.py b/src/ldap_protocol/ldap_requests/base.py similarity index 100% rename from app/ldap_protocol/ldap_requests/base.py rename to src/ldap_protocol/ldap_requests/base.py diff --git a/app/ldap_protocol/ldap_requests/bind.py b/src/ldap_protocol/ldap_requests/bind.py similarity index 100% rename from app/ldap_protocol/ldap_requests/bind.py rename to src/ldap_protocol/ldap_requests/bind.py diff --git a/app/ldap_protocol/ldap_requests/bind_methods/__init__.py b/src/ldap_protocol/ldap_requests/bind_methods/__init__.py similarity index 100% rename from app/ldap_protocol/ldap_requests/bind_methods/__init__.py rename to src/ldap_protocol/ldap_requests/bind_methods/__init__.py diff --git a/app/ldap_protocol/ldap_requests/bind_methods/base.py b/src/ldap_protocol/ldap_requests/bind_methods/base.py similarity index 100% rename from app/ldap_protocol/ldap_requests/bind_methods/base.py rename to src/ldap_protocol/ldap_requests/bind_methods/base.py diff --git a/app/ldap_protocol/ldap_requests/bind_methods/sasl_gssapi.py b/src/ldap_protocol/ldap_requests/bind_methods/sasl_gssapi.py similarity index 100% rename from app/ldap_protocol/ldap_requests/bind_methods/sasl_gssapi.py rename to src/ldap_protocol/ldap_requests/bind_methods/sasl_gssapi.py diff --git a/app/ldap_protocol/ldap_requests/bind_methods/sasl_plain.py b/src/ldap_protocol/ldap_requests/bind_methods/sasl_plain.py similarity index 100% rename from app/ldap_protocol/ldap_requests/bind_methods/sasl_plain.py rename to src/ldap_protocol/ldap_requests/bind_methods/sasl_plain.py diff --git a/app/ldap_protocol/ldap_requests/bind_methods/sasl_spnego.py b/src/ldap_protocol/ldap_requests/bind_methods/sasl_spnego.py similarity index 100% rename from app/ldap_protocol/ldap_requests/bind_methods/sasl_spnego.py rename to src/ldap_protocol/ldap_requests/bind_methods/sasl_spnego.py diff --git a/app/ldap_protocol/ldap_requests/bind_methods/simple.py b/src/ldap_protocol/ldap_requests/bind_methods/simple.py similarity index 100% rename from app/ldap_protocol/ldap_requests/bind_methods/simple.py rename to src/ldap_protocol/ldap_requests/bind_methods/simple.py diff --git a/app/ldap_protocol/ldap_requests/compare.py b/src/ldap_protocol/ldap_requests/compare.py similarity index 100% rename from app/ldap_protocol/ldap_requests/compare.py rename to src/ldap_protocol/ldap_requests/compare.py diff --git a/app/ldap_protocol/ldap_requests/contexts.py b/src/ldap_protocol/ldap_requests/contexts.py similarity index 100% rename from app/ldap_protocol/ldap_requests/contexts.py rename to src/ldap_protocol/ldap_requests/contexts.py diff --git a/app/ldap_protocol/ldap_requests/delete.py b/src/ldap_protocol/ldap_requests/delete.py similarity index 100% rename from app/ldap_protocol/ldap_requests/delete.py rename to src/ldap_protocol/ldap_requests/delete.py diff --git a/app/ldap_protocol/ldap_requests/exceptions.py b/src/ldap_protocol/ldap_requests/exceptions.py similarity index 100% rename from app/ldap_protocol/ldap_requests/exceptions.py rename to src/ldap_protocol/ldap_requests/exceptions.py diff --git a/app/ldap_protocol/ldap_requests/extended.py b/src/ldap_protocol/ldap_requests/extended.py similarity index 100% rename from app/ldap_protocol/ldap_requests/extended.py rename to src/ldap_protocol/ldap_requests/extended.py diff --git a/app/ldap_protocol/ldap_requests/modify.py b/src/ldap_protocol/ldap_requests/modify.py similarity index 100% rename from app/ldap_protocol/ldap_requests/modify.py rename to src/ldap_protocol/ldap_requests/modify.py diff --git a/app/ldap_protocol/ldap_requests/modify_dn.py b/src/ldap_protocol/ldap_requests/modify_dn.py similarity index 100% rename from app/ldap_protocol/ldap_requests/modify_dn.py rename to src/ldap_protocol/ldap_requests/modify_dn.py diff --git a/app/ldap_protocol/ldap_requests/search.py b/src/ldap_protocol/ldap_requests/search.py similarity index 100% rename from app/ldap_protocol/ldap_requests/search.py rename to src/ldap_protocol/ldap_requests/search.py diff --git a/app/ldap_protocol/ldap_responses.py b/src/ldap_protocol/ldap_responses.py similarity index 100% rename from app/ldap_protocol/ldap_responses.py rename to src/ldap_protocol/ldap_responses.py diff --git a/app/ldap_protocol/ldap_schema/__init__.py b/src/ldap_protocol/ldap_schema/__init__.py similarity index 100% rename from app/ldap_protocol/ldap_schema/__init__.py rename to src/ldap_protocol/ldap_schema/__init__.py diff --git a/app/ldap_protocol/ldap_schema/attribute_type_dao.py b/src/ldap_protocol/ldap_schema/attribute_type_dao.py similarity index 100% rename from app/ldap_protocol/ldap_schema/attribute_type_dao.py rename to src/ldap_protocol/ldap_schema/attribute_type_dao.py diff --git a/app/ldap_protocol/ldap_schema/attribute_type_use_case.py b/src/ldap_protocol/ldap_schema/attribute_type_use_case.py similarity index 100% rename from app/ldap_protocol/ldap_schema/attribute_type_use_case.py rename to src/ldap_protocol/ldap_schema/attribute_type_use_case.py diff --git a/app/ldap_protocol/ldap_schema/attribute_value_validator.py b/src/ldap_protocol/ldap_schema/attribute_value_validator.py similarity index 100% rename from app/ldap_protocol/ldap_schema/attribute_value_validator.py rename to src/ldap_protocol/ldap_schema/attribute_value_validator.py diff --git a/app/ldap_protocol/ldap_schema/constants.py b/src/ldap_protocol/ldap_schema/constants.py similarity index 100% rename from app/ldap_protocol/ldap_schema/constants.py rename to src/ldap_protocol/ldap_schema/constants.py diff --git a/app/ldap_protocol/ldap_schema/dto.py b/src/ldap_protocol/ldap_schema/dto.py similarity index 100% rename from app/ldap_protocol/ldap_schema/dto.py rename to src/ldap_protocol/ldap_schema/dto.py diff --git a/app/ldap_protocol/ldap_schema/entity_type_dao.py b/src/ldap_protocol/ldap_schema/entity_type_dao.py similarity index 100% rename from app/ldap_protocol/ldap_schema/entity_type_dao.py rename to src/ldap_protocol/ldap_schema/entity_type_dao.py diff --git a/app/ldap_protocol/ldap_schema/entity_type_use_case.py b/src/ldap_protocol/ldap_schema/entity_type_use_case.py similarity index 100% rename from app/ldap_protocol/ldap_schema/entity_type_use_case.py rename to src/ldap_protocol/ldap_schema/entity_type_use_case.py diff --git a/app/ldap_protocol/ldap_schema/exceptions.py b/src/ldap_protocol/ldap_schema/exceptions.py similarity index 100% rename from app/ldap_protocol/ldap_schema/exceptions.py rename to src/ldap_protocol/ldap_schema/exceptions.py diff --git a/app/ldap_protocol/ldap_schema/object_class_dao.py b/src/ldap_protocol/ldap_schema/object_class_dao.py similarity index 100% rename from app/ldap_protocol/ldap_schema/object_class_dao.py rename to src/ldap_protocol/ldap_schema/object_class_dao.py diff --git a/app/ldap_protocol/ldap_schema/object_class_use_case.py b/src/ldap_protocol/ldap_schema/object_class_use_case.py similarity index 100% rename from app/ldap_protocol/ldap_schema/object_class_use_case.py rename to src/ldap_protocol/ldap_schema/object_class_use_case.py diff --git a/app/ldap_protocol/master_check_use_case.py b/src/ldap_protocol/master_check_use_case.py similarity index 100% rename from app/ldap_protocol/master_check_use_case.py rename to src/ldap_protocol/master_check_use_case.py diff --git a/app/ldap_protocol/messages.py b/src/ldap_protocol/messages.py similarity index 100% rename from app/ldap_protocol/messages.py rename to src/ldap_protocol/messages.py diff --git a/app/ldap_protocol/multifactor.py b/src/ldap_protocol/multifactor.py similarity index 100% rename from app/ldap_protocol/multifactor.py rename to src/ldap_protocol/multifactor.py diff --git a/app/ldap_protocol/objects.py b/src/ldap_protocol/objects.py similarity index 100% rename from app/ldap_protocol/objects.py rename to src/ldap_protocol/objects.py diff --git a/app/ldap_protocol/permissions_checker.py b/src/ldap_protocol/permissions_checker.py similarity index 100% rename from app/ldap_protocol/permissions_checker.py rename to src/ldap_protocol/permissions_checker.py diff --git a/app/ldap_protocol/policies/__init__.py b/src/ldap_protocol/policies/__init__.py similarity index 100% rename from app/ldap_protocol/policies/__init__.py rename to src/ldap_protocol/policies/__init__.py diff --git a/app/ldap_protocol/policies/audit/__init__.py b/src/ldap_protocol/policies/audit/__init__.py similarity index 100% rename from app/ldap_protocol/policies/audit/__init__.py rename to src/ldap_protocol/policies/audit/__init__.py diff --git a/app/ldap_protocol/policies/audit/audit_use_case.py b/src/ldap_protocol/policies/audit/audit_use_case.py similarity index 100% rename from app/ldap_protocol/policies/audit/audit_use_case.py rename to src/ldap_protocol/policies/audit/audit_use_case.py diff --git a/app/ldap_protocol/policies/audit/dataclasses.py b/src/ldap_protocol/policies/audit/dataclasses.py similarity index 100% rename from app/ldap_protocol/policies/audit/dataclasses.py rename to src/ldap_protocol/policies/audit/dataclasses.py diff --git a/app/ldap_protocol/policies/audit/destination_dao.py b/src/ldap_protocol/policies/audit/destination_dao.py similarity index 100% rename from app/ldap_protocol/policies/audit/destination_dao.py rename to src/ldap_protocol/policies/audit/destination_dao.py diff --git a/app/ldap_protocol/policies/audit/events/__init__.py b/src/ldap_protocol/policies/audit/events/__init__.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/__init__.py rename to src/ldap_protocol/policies/audit/events/__init__.py diff --git a/app/ldap_protocol/policies/audit/events/dataclasses.py b/src/ldap_protocol/policies/audit/events/dataclasses.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/dataclasses.py rename to src/ldap_protocol/policies/audit/events/dataclasses.py diff --git a/app/ldap_protocol/policies/audit/events/factory.py b/src/ldap_protocol/policies/audit/events/factory.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/factory.py rename to src/ldap_protocol/policies/audit/events/factory.py diff --git a/app/ldap_protocol/policies/audit/events/handler.py b/src/ldap_protocol/policies/audit/events/handler.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/handler.py rename to src/ldap_protocol/policies/audit/events/handler.py diff --git a/app/ldap_protocol/policies/audit/events/managers.py b/src/ldap_protocol/policies/audit/events/managers.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/managers.py rename to src/ldap_protocol/policies/audit/events/managers.py diff --git a/app/ldap_protocol/policies/audit/events/normalizer.py b/src/ldap_protocol/policies/audit/events/normalizer.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/normalizer.py rename to src/ldap_protocol/policies/audit/events/normalizer.py diff --git a/app/ldap_protocol/policies/audit/events/sender.py b/src/ldap_protocol/policies/audit/events/sender.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/sender.py rename to src/ldap_protocol/policies/audit/events/sender.py diff --git a/app/ldap_protocol/policies/audit/events/service_senders/__init__.py b/src/ldap_protocol/policies/audit/events/service_senders/__init__.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/service_senders/__init__.py rename to src/ldap_protocol/policies/audit/events/service_senders/__init__.py diff --git a/app/ldap_protocol/policies/audit/events/service_senders/base.py b/src/ldap_protocol/policies/audit/events/service_senders/base.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/service_senders/base.py rename to src/ldap_protocol/policies/audit/events/service_senders/base.py diff --git a/app/ldap_protocol/policies/audit/events/service_senders/rfc5424_serializer.py b/src/ldap_protocol/policies/audit/events/service_senders/rfc5424_serializer.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/service_senders/rfc5424_serializer.py rename to src/ldap_protocol/policies/audit/events/service_senders/rfc5424_serializer.py diff --git a/app/ldap_protocol/policies/audit/events/service_senders/syslog.py b/src/ldap_protocol/policies/audit/events/service_senders/syslog.py similarity index 100% rename from app/ldap_protocol/policies/audit/events/service_senders/syslog.py rename to src/ldap_protocol/policies/audit/events/service_senders/syslog.py diff --git a/app/ldap_protocol/policies/audit/exception.py b/src/ldap_protocol/policies/audit/exception.py similarity index 100% rename from app/ldap_protocol/policies/audit/exception.py rename to src/ldap_protocol/policies/audit/exception.py diff --git a/app/ldap_protocol/policies/audit/monitor.py b/src/ldap_protocol/policies/audit/monitor.py similarity index 100% rename from app/ldap_protocol/policies/audit/monitor.py rename to src/ldap_protocol/policies/audit/monitor.py diff --git a/app/ldap_protocol/policies/audit/policies_dao.py b/src/ldap_protocol/policies/audit/policies_dao.py similarity index 100% rename from app/ldap_protocol/policies/audit/policies_dao.py rename to src/ldap_protocol/policies/audit/policies_dao.py diff --git a/app/ldap_protocol/policies/audit/schemas.py b/src/ldap_protocol/policies/audit/schemas.py similarity index 100% rename from app/ldap_protocol/policies/audit/schemas.py rename to src/ldap_protocol/policies/audit/schemas.py diff --git a/app/ldap_protocol/policies/audit/service.py b/src/ldap_protocol/policies/audit/service.py similarity index 100% rename from app/ldap_protocol/policies/audit/service.py rename to src/ldap_protocol/policies/audit/service.py diff --git a/app/ldap_protocol/policies/network/__init__.py b/src/ldap_protocol/policies/network/__init__.py similarity index 100% rename from app/ldap_protocol/policies/network/__init__.py rename to src/ldap_protocol/policies/network/__init__.py diff --git a/app/ldap_protocol/policies/network/dto.py b/src/ldap_protocol/policies/network/dto.py similarity index 100% rename from app/ldap_protocol/policies/network/dto.py rename to src/ldap_protocol/policies/network/dto.py diff --git a/app/ldap_protocol/policies/network/exceptions.py b/src/ldap_protocol/policies/network/exceptions.py similarity index 100% rename from app/ldap_protocol/policies/network/exceptions.py rename to src/ldap_protocol/policies/network/exceptions.py diff --git a/app/ldap_protocol/policies/network/gateway.py b/src/ldap_protocol/policies/network/gateway.py similarity index 100% rename from app/ldap_protocol/policies/network/gateway.py rename to src/ldap_protocol/policies/network/gateway.py diff --git a/app/ldap_protocol/policies/network/use_cases.py b/src/ldap_protocol/policies/network/use_cases.py similarity index 100% rename from app/ldap_protocol/policies/network/use_cases.py rename to src/ldap_protocol/policies/network/use_cases.py diff --git a/app/ldap_protocol/policies/network/validator_gateway.py b/src/ldap_protocol/policies/network/validator_gateway.py similarity index 100% rename from app/ldap_protocol/policies/network/validator_gateway.py rename to src/ldap_protocol/policies/network/validator_gateway.py diff --git a/app/ldap_protocol/policies/network/validator_protocol.py b/src/ldap_protocol/policies/network/validator_protocol.py similarity index 100% rename from app/ldap_protocol/policies/network/validator_protocol.py rename to src/ldap_protocol/policies/network/validator_protocol.py diff --git a/app/ldap_protocol/policies/password/__init__.py b/src/ldap_protocol/policies/password/__init__.py similarity index 100% rename from app/ldap_protocol/policies/password/__init__.py rename to src/ldap_protocol/policies/password/__init__.py diff --git a/app/ldap_protocol/policies/password/ban_word_repository.py b/src/ldap_protocol/policies/password/ban_word_repository.py similarity index 100% rename from app/ldap_protocol/policies/password/ban_word_repository.py rename to src/ldap_protocol/policies/password/ban_word_repository.py diff --git a/app/ldap_protocol/policies/password/constants.py b/src/ldap_protocol/policies/password/constants.py similarity index 100% rename from app/ldap_protocol/policies/password/constants.py rename to src/ldap_protocol/policies/password/constants.py diff --git a/app/ldap_protocol/policies/password/dao.py b/src/ldap_protocol/policies/password/dao.py similarity index 100% rename from app/ldap_protocol/policies/password/dao.py rename to src/ldap_protocol/policies/password/dao.py diff --git a/app/ldap_protocol/policies/password/dataclasses.py b/src/ldap_protocol/policies/password/dataclasses.py similarity index 100% rename from app/ldap_protocol/policies/password/dataclasses.py rename to src/ldap_protocol/policies/password/dataclasses.py diff --git a/app/ldap_protocol/policies/password/error_messages.py b/src/ldap_protocol/policies/password/error_messages.py similarity index 100% rename from app/ldap_protocol/policies/password/error_messages.py rename to src/ldap_protocol/policies/password/error_messages.py diff --git a/app/ldap_protocol/policies/password/exceptions.py b/src/ldap_protocol/policies/password/exceptions.py similarity index 100% rename from app/ldap_protocol/policies/password/exceptions.py rename to src/ldap_protocol/policies/password/exceptions.py diff --git a/app/ldap_protocol/policies/password/settings.py b/src/ldap_protocol/policies/password/settings.py similarity index 100% rename from app/ldap_protocol/policies/password/settings.py rename to src/ldap_protocol/policies/password/settings.py diff --git a/app/ldap_protocol/policies/password/use_cases.py b/src/ldap_protocol/policies/password/use_cases.py similarity index 100% rename from app/ldap_protocol/policies/password/use_cases.py rename to src/ldap_protocol/policies/password/use_cases.py diff --git a/app/ldap_protocol/policies/password/validator.py b/src/ldap_protocol/policies/password/validator.py similarity index 100% rename from app/ldap_protocol/policies/password/validator.py rename to src/ldap_protocol/policies/password/validator.py diff --git a/app/ldap_protocol/roles/__init__.py b/src/ldap_protocol/roles/__init__.py similarity index 100% rename from app/ldap_protocol/roles/__init__.py rename to src/ldap_protocol/roles/__init__.py diff --git a/app/ldap_protocol/roles/access_manager.py b/src/ldap_protocol/roles/access_manager.py similarity index 100% rename from app/ldap_protocol/roles/access_manager.py rename to src/ldap_protocol/roles/access_manager.py diff --git a/app/ldap_protocol/roles/ace_dao.py b/src/ldap_protocol/roles/ace_dao.py similarity index 100% rename from app/ldap_protocol/roles/ace_dao.py rename to src/ldap_protocol/roles/ace_dao.py diff --git a/app/ldap_protocol/roles/dataclasses.py b/src/ldap_protocol/roles/dataclasses.py similarity index 100% rename from app/ldap_protocol/roles/dataclasses.py rename to src/ldap_protocol/roles/dataclasses.py diff --git a/app/ldap_protocol/roles/exceptions.py b/src/ldap_protocol/roles/exceptions.py similarity index 100% rename from app/ldap_protocol/roles/exceptions.py rename to src/ldap_protocol/roles/exceptions.py diff --git a/app/ldap_protocol/roles/role_dao.py b/src/ldap_protocol/roles/role_dao.py similarity index 100% rename from app/ldap_protocol/roles/role_dao.py rename to src/ldap_protocol/roles/role_dao.py diff --git a/app/ldap_protocol/roles/role_use_case.py b/src/ldap_protocol/roles/role_use_case.py similarity index 100% rename from app/ldap_protocol/roles/role_use_case.py rename to src/ldap_protocol/roles/role_use_case.py diff --git a/app/ldap_protocol/rootdse/__init__.py b/src/ldap_protocol/rootdse/__init__.py similarity index 100% rename from app/ldap_protocol/rootdse/__init__.py rename to src/ldap_protocol/rootdse/__init__.py diff --git a/app/ldap_protocol/rootdse/dto.py b/src/ldap_protocol/rootdse/dto.py similarity index 100% rename from app/ldap_protocol/rootdse/dto.py rename to src/ldap_protocol/rootdse/dto.py diff --git a/app/ldap_protocol/rootdse/gateway.py b/src/ldap_protocol/rootdse/gateway.py similarity index 100% rename from app/ldap_protocol/rootdse/gateway.py rename to src/ldap_protocol/rootdse/gateway.py diff --git a/app/ldap_protocol/rootdse/gw_protocol.py b/src/ldap_protocol/rootdse/gw_protocol.py similarity index 100% rename from app/ldap_protocol/rootdse/gw_protocol.py rename to src/ldap_protocol/rootdse/gw_protocol.py diff --git a/app/ldap_protocol/rootdse/netlogon.py b/src/ldap_protocol/rootdse/netlogon.py similarity index 100% rename from app/ldap_protocol/rootdse/netlogon.py rename to src/ldap_protocol/rootdse/netlogon.py diff --git a/app/ldap_protocol/rootdse/reader.py b/src/ldap_protocol/rootdse/reader.py similarity index 100% rename from app/ldap_protocol/rootdse/reader.py rename to src/ldap_protocol/rootdse/reader.py diff --git a/app/ldap_protocol/server.py b/src/ldap_protocol/server.py similarity index 100% rename from app/ldap_protocol/server.py rename to src/ldap_protocol/server.py diff --git a/app/ldap_protocol/session_storage/__init__.py b/src/ldap_protocol/session_storage/__init__.py similarity index 100% rename from app/ldap_protocol/session_storage/__init__.py rename to src/ldap_protocol/session_storage/__init__.py diff --git a/app/ldap_protocol/session_storage/base.py b/src/ldap_protocol/session_storage/base.py similarity index 100% rename from app/ldap_protocol/session_storage/base.py rename to src/ldap_protocol/session_storage/base.py diff --git a/app/ldap_protocol/session_storage/exceptions.py b/src/ldap_protocol/session_storage/exceptions.py similarity index 100% rename from app/ldap_protocol/session_storage/exceptions.py rename to src/ldap_protocol/session_storage/exceptions.py diff --git a/app/ldap_protocol/session_storage/redis.py b/src/ldap_protocol/session_storage/redis.py similarity index 100% rename from app/ldap_protocol/session_storage/redis.py rename to src/ldap_protocol/session_storage/redis.py diff --git a/app/ldap_protocol/session_storage/repository.py b/src/ldap_protocol/session_storage/repository.py similarity index 100% rename from app/ldap_protocol/session_storage/repository.py rename to src/ldap_protocol/session_storage/repository.py diff --git a/app/ldap_protocol/udp_server.py b/src/ldap_protocol/udp_server.py similarity index 100% rename from app/ldap_protocol/udp_server.py rename to src/ldap_protocol/udp_server.py diff --git a/app/ldap_protocol/user_account_control.py b/src/ldap_protocol/user_account_control.py similarity index 100% rename from app/ldap_protocol/user_account_control.py rename to src/ldap_protocol/user_account_control.py diff --git a/app/ldap_protocol/utils/__init__.py b/src/ldap_protocol/utils/__init__.py similarity index 100% rename from app/ldap_protocol/utils/__init__.py rename to src/ldap_protocol/utils/__init__.py diff --git a/app/ldap_protocol/utils/async_cache.py b/src/ldap_protocol/utils/async_cache.py similarity index 100% rename from app/ldap_protocol/utils/async_cache.py rename to src/ldap_protocol/utils/async_cache.py diff --git a/app/ldap_protocol/utils/const.py b/src/ldap_protocol/utils/const.py similarity index 100% rename from app/ldap_protocol/utils/const.py rename to src/ldap_protocol/utils/const.py diff --git a/app/ldap_protocol/utils/cte.py b/src/ldap_protocol/utils/cte.py similarity index 100% rename from app/ldap_protocol/utils/cte.py rename to src/ldap_protocol/utils/cte.py diff --git a/app/ldap_protocol/utils/helpers.py b/src/ldap_protocol/utils/helpers.py similarity index 100% rename from app/ldap_protocol/utils/helpers.py rename to src/ldap_protocol/utils/helpers.py diff --git a/app/ldap_protocol/utils/pagination.py b/src/ldap_protocol/utils/pagination.py similarity index 100% rename from app/ldap_protocol/utils/pagination.py rename to src/ldap_protocol/utils/pagination.py diff --git a/app/ldap_protocol/utils/queries.py b/src/ldap_protocol/utils/queries.py similarity index 100% rename from app/ldap_protocol/utils/queries.py rename to src/ldap_protocol/utils/queries.py diff --git a/app/ldap_protocol/utils/raw_definition_parser.py b/src/ldap_protocol/utils/raw_definition_parser.py similarity index 100% rename from app/ldap_protocol/utils/raw_definition_parser.py rename to src/ldap_protocol/utils/raw_definition_parser.py diff --git a/app/ldap_protocol/utils/udp.py b/src/ldap_protocol/utils/udp.py similarity index 100% rename from app/ldap_protocol/utils/udp.py rename to src/ldap_protocol/utils/udp.py diff --git a/app/logs/.gitignore b/src/logs/.gitignore similarity index 100% rename from app/logs/.gitignore rename to src/logs/.gitignore diff --git a/app/multidirectory.py b/src/multidirectory.py similarity index 100% rename from app/multidirectory.py rename to src/multidirectory.py diff --git a/app/password_utils.py b/src/password_utils.py similarity index 100% rename from app/password_utils.py rename to src/password_utils.py diff --git a/app/schedule.py b/src/schedule.py similarity index 100% rename from app/schedule.py rename to src/schedule.py From deb68330a5e19b9c627924cfdfbeb916eb297f5b Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:35:32 +0300 Subject: [PATCH 04/27] redactor: replace ldap_protocol with application --- .../01f3f05a5b11_add_primary_group_id.py | 8 +- .../versions/05ddc0bd562a_add_roles.py | 4 +- .../275222846605_initial_ldap_schema.py | 6 +- ...6ec_update_krbadmin_useraccountcontrol_.py | 4 +- .../versions/6f8fe2548893_fix_read_only.py | 2 +- .../71e642808369_add_directory_is_system.py | 2 +- .../versions/8164b4a9e1f1_add_ou_computers.py | 6 +- ...bc16b87d_extend_password_policy_for_api.py | 2 +- .../ba78cef9700a_initial_entity_type.py | 8 +- .../c4888c68e221_fix_admin_attr_and_policy.py | 6 +- .../c5a9b3f2e8d7_add_contact_object_class.py | 6 +- .../dafg3a4b22ab_add_preauth_princ.py | 2 +- ...4c52a613e5_migrate_password_prop_from_E.py | 2 +- .../e4d6d99d32bd_add_audit_policies.py | 10 +- src/alembic/versions/fafc3d0b11ec_.py | 4 +- src/api/audit/adapter.py | 6 +- src/api/audit/router.py | 4 +- src/api/auth/adapters/auth.py | 8 +- src/api/auth/adapters/mfa.py | 8 +- src/api/auth/adapters/session_gateway.py | 2 +- src/api/auth/router_auth.py | 12 +-- src/api/auth/router_mfa.py | 6 +- src/api/auth/session_router.py | 2 +- src/api/dhcp/adapter.py | 4 +- src/api/dhcp/router.py | 4 +- src/api/ldap_schema/__init__.py | 2 +- .../ldap_schema/adapters/attribute_type.py | 6 +- .../adapters/base_ldap_schema_adapter.py | 2 +- src/api/ldap_schema/adapters/entity_type.py | 6 +- src/api/ldap_schema/adapters/object_class.py | 6 +- src/api/ldap_schema/attribute_type_router.py | 2 +- src/api/ldap_schema/entity_type_router.py | 2 +- src/api/ldap_schema/object_class_router.py | 2 +- src/api/ldap_schema/schema.py | 4 +- src/api/main/adapters/dns.py | 4 +- src/api/main/adapters/kerberos.py | 8 +- src/api/main/dns_router.py | 4 +- src/api/main/krb5_router.py | 10 +- src/api/main/router.py | 10 +- src/api/main/schema.py | 10 +- src/api/main/utils.py | 2 +- src/api/middlewares.py | 2 +- src/api/network/adapters/network.py | 2 +- src/api/network/router.py | 2 +- src/api/network/schema.py | 2 +- src/api/password_policy/adapter.py | 6 +- src/api/password_policy/error_utils.py | 4 +- .../password_policy/password_policy_router.py | 2 +- src/api/password_policy/schemas.py | 4 +- .../user_password_history_router.py | 2 +- src/api/shadow/adapter.py | 2 +- src/api/shadow/router.py | 8 +- src/api/utils.py | 2 +- .../__init__.py | 0 .../asn1parser.py | 0 .../auth/__init__.py | 0 .../auth/auth_manager.py | 36 +++---- .../auth/dto.py | 0 .../auth/exceptions/__init__.py | 0 .../auth/exceptions/mfa.py | 0 .../auth/mfa_manager.py | 18 ++-- .../auth/schemas.py | 2 +- .../auth/setup_gateway.py | 10 +- .../auth/use_cases.py | 16 +-- .../auth/utils.py | 2 +- .../custom_requests/__init__.py | 0 .../custom_requests/rename.py | 6 +- .../data_logger.py | 4 +- .../dependency.py | 0 .../dhcp/__init__.py | 0 .../dhcp/base.py | 0 .../dhcp/dataclasses.py | 0 .../dhcp/dhcp_manager_repository.py | 0 .../dhcp/enums.py | 0 .../dhcp/exceptions.py | 0 .../dhcp/kea_dhcp_manager.py | 0 .../dhcp/kea_dhcp_repository.py | 0 .../dhcp/retorts.py | 0 .../dhcp/schemas.py | 0 .../dhcp/stub.py | 0 .../dhcp/utils.py | 0 .../dialogue.py | 4 +- .../dns/__init__.py | 0 .../dns/base.py | 2 +- .../dns/dns_gateway.py | 4 +- src/{ldap_protocol => application}/dns/dto.py | 0 .../dns/exceptions.py | 0 .../dns/remote.py | 0 .../dns/selfhosted.py | 2 +- .../dns/stub.py | 0 .../dns/use_cases.py | 4 +- .../dns/utils.py | 0 .../filter_interpreter.py | 4 +- .../identity/__init__.py | 0 .../identity/exceptions.py | 0 .../identity/provider.py | 10 +- .../identity/provider_gateway.py | 0 .../identity/utils.py | 2 +- .../kerberos/__init__.py | 0 .../kerberos/base.py | 0 .../kerberos/client.py | 2 +- .../kerberos/exceptions.py | 0 .../kerberos/ldap_structure.py | 12 +-- .../kerberos/schemas.py | 2 +- .../kerberos/service.py | 14 +-- .../kerberos/stub.py | 2 +- .../kerberos/template_render.py | 0 .../kerberos/utils.py | 0 .../ldap_codes.py | 0 .../ldap_requests/__init__.py | 0 .../ldap_requests/abandon.py | 6 +- .../ldap_requests/add.py | 14 +-- .../ldap_requests/base.py | 16 +-- .../ldap_requests/bind.py | 20 ++-- .../ldap_requests/bind_methods/__init__.py | 0 .../ldap_requests/bind_methods/base.py | 6 +- .../ldap_requests/bind_methods/sasl_gssapi.py | 10 +- .../ldap_requests/bind_methods/sasl_plain.py | 4 +- .../ldap_requests/bind_methods/sasl_spnego.py | 6 +- .../ldap_requests/bind_methods/simple.py | 2 +- .../ldap_requests/compare.py | 2 +- .../ldap_requests/contexts.py | 22 ++-- .../ldap_requests/delete.py | 14 +-- .../ldap_requests/exceptions.py | 0 .../ldap_requests/extended.py | 14 +-- .../ldap_requests/modify.py | 24 ++--- .../ldap_requests/modify_dn.py | 10 +- .../ldap_requests/search.py | 22 ++-- .../ldap_responses.py | 2 +- .../ldap_schema/__init__.py | 0 .../ldap_schema/attribute_type_dao.py | 6 +- .../ldap_schema/attribute_type_use_case.py | 8 +- .../ldap_schema/attribute_value_validator.py | 2 +- .../ldap_schema/constants.py | 0 .../ldap_schema/dto.py | 0 .../ldap_schema/entity_type_dao.py | 10 +- .../ldap_schema/entity_type_use_case.py | 10 +- .../ldap_schema/exceptions.py | 0 .../ldap_schema/object_class_dao.py | 2 +- .../ldap_schema/object_class_use_case.py | 8 +- .../master_check_use_case.py | 0 .../messages.py | 0 .../multifactor.py | 0 src/{ldap_protocol => application}/objects.py | 0 .../permissions_checker.py | 4 +- .../policies/__init__.py | 0 .../policies/audit/__init__.py | 0 .../policies/audit/audit_use_case.py | 4 +- .../policies/audit/dataclasses.py | 2 +- .../policies/audit/destination_dao.py | 0 .../policies/audit/events/__init__.py | 0 .../policies/audit/events/dataclasses.py | 4 +- .../policies/audit/events/factory.py | 6 +- .../policies/audit/events/handler.py | 4 +- .../policies/audit/events/managers.py | 0 .../policies/audit/events/normalizer.py | 2 +- .../policies/audit/events/sender.py | 4 +- .../audit/events/service_senders/__init__.py | 0 .../audit/events/service_senders/base.py | 4 +- .../service_senders/rfc5424_serializer.py | 2 +- .../audit/events/service_senders/syslog.py | 2 +- .../policies/audit/exception.py | 0 .../policies/audit/monitor.py | 18 ++-- .../policies/audit/policies_dao.py | 0 .../policies/audit/schemas.py | 0 .../policies/audit/service.py | 0 .../policies/network/__init__.py | 0 .../policies/network/dto.py | 0 .../policies/network/exceptions.py | 0 .../policies/network/gateway.py | 4 +- .../policies/network/use_cases.py | 8 +- .../policies/network/validator_gateway.py | 0 .../policies/network/validator_protocol.py | 0 .../policies/password/__init__.py | 0 .../policies/password/ban_word_repository.py | 2 +- .../policies/password/constants.py | 0 .../policies/password/dao.py | 12 +-- .../policies/password/dataclasses.py | 0 .../policies/password/error_messages.py | 0 .../policies/password/exceptions.py | 0 .../policies/password/settings.py | 0 .../policies/password/use_cases.py | 8 +- .../policies/password/validator.py | 4 +- .../roles/__init__.py | 0 .../roles/access_manager.py | 2 +- .../roles/ace_dao.py | 4 +- .../roles/dataclasses.py | 2 +- .../roles/exceptions.py | 0 .../roles/role_dao.py | 2 +- .../roles/role_use_case.py | 4 +- .../rootdse/__init__.py | 0 .../rootdse/dto.py | 0 .../rootdse/gateway.py | 0 .../rootdse/gw_protocol.py | 0 .../rootdse/netlogon.py | 2 +- .../rootdse/reader.py | 2 +- src/{ldap_protocol => application}/server.py | 6 +- .../session_storage/__init__.py | 0 .../session_storage/base.py | 0 .../session_storage/exceptions.py | 0 .../session_storage/redis.py | 0 .../session_storage/repository.py | 2 +- .../udp_server.py | 4 +- .../user_account_control.py | 4 +- .../utils/__init__.py | 0 .../utils/async_cache.py | 0 .../utils/const.py | 0 .../utils/cte.py | 0 .../utils/helpers.py | 0 .../utils/pagination.py | 0 .../utils/queries.py | 2 +- .../utils/raw_definition_parser.py | 0 .../utils/udp.py | 0 src/extra/scripts/check_ldap_principal.py | 4 +- .../scripts/principal_block_user_sync.py | 6 +- src/extra/scripts/uac_sync.py | 6 +- src/extra/scripts/update_admin_permissions.py | 2 +- src/extra/scripts/update_krb5_config.py | 4 +- .../scripts/update_status_proccess_events.py | 2 +- src/ioc.py | 96 ++++++++--------- src/multidirectory.py | 12 +-- src/password_utils.py | 2 +- src/schedule.py | 2 +- tests/conftest.py | 102 +++++++++--------- tests/constants.py | 2 +- tests/search_request_datasets.py | 2 +- tests/test_api/test_audit/test_router.py | 4 +- .../test_auth/test_identity_provider.py | 12 +-- tests/test_api/test_auth/test_router.py | 12 +-- tests/test_api/test_auth/test_sessions.py | 8 +- tests/test_api/test_dhcp/test_adapter.py | 4 +- tests/test_api/test_dhcp/test_router.py | 4 +- tests/test_api/test_main/conftest.py | 6 +- tests/test_api/test_main/test_dns.py | 2 +- tests/test_api/test_main/test_kadmin.py | 8 +- tests/test_api/test_main/test_multifactor.py | 2 +- .../test_main/test_router/conftest.py | 10 +- .../test_main/test_router/test_add.py | 4 +- .../test_main/test_router/test_delete.py | 2 +- .../test_main/test_router/test_login.py | 2 +- .../test_main/test_router/test_modify.py | 6 +- .../test_main/test_router/test_modify_dn.py | 2 +- .../test_main/test_router/test_rename.py | 4 +- .../test_main/test_router/test_search.py | 4 +- .../test_api/test_password_policy/conftest.py | 6 +- tests/test_api/test_shadow/conftest.py | 2 +- .../test_api/test_web_permissions/conftest.py | 8 +- .../test_permission_checker.py | 6 +- .../test_ldap/policies/test_audit/conftest.py | 6 +- .../test_audit/test_rfc5424_serializer.py | 2 +- .../policies/test_audit/test_service.py | 6 +- .../test_network/test_pool_client_handler.py | 4 +- .../policies/test_network/test_use_case.py | 4 +- .../policies/test_password/conftest.py | 2 +- .../policies/test_password/datasets.py | 2 +- .../policies/test_password/test_use_cases.py | 4 +- .../policies/test_password/test_validator.py | 6 +- .../test_entity_level_access.py | 2 +- .../test_access_manager/test_modify_access.py | 6 +- .../test_access_manager/test_search_access.py | 2 +- .../test_attribute_value_validator.py | 2 +- tests/test_ldap/test_bind.py | 12 +-- .../test_container_restrictions/conftest.py | 2 +- .../test_container_subcontainers.py | 2 +- .../test_ldap/test_ldap3_definition_parse.py | 2 +- tests/test_ldap/test_netlogon.py | 2 +- tests/test_ldap/test_passwd_change.py | 2 +- tests/test_ldap/test_roles/conftest.py | 2 +- .../test_roles/test_multiple_access.py | 10 +- tests/test_ldap/test_roles/test_search.py | 8 +- tests/test_ldap/test_util/test_add.py | 16 +-- tests/test_ldap/test_util/test_delete.py | 8 +- tests/test_ldap/test_util/test_modify.py | 14 +-- tests/test_ldap/test_util/test_search.py | 20 ++-- tests/test_shedule.py | 2 +- 275 files changed, 642 insertions(+), 642 deletions(-) rename src/{ldap_protocol => application}/__init__.py (100%) rename src/{ldap_protocol => application}/asn1parser.py (100%) rename src/{ldap_protocol => application}/auth/__init__.py (100%) rename src/{ldap_protocol => application}/auth/auth_manager.py (90%) rename src/{ldap_protocol => application}/auth/dto.py (100%) rename src/{ldap_protocol => application}/auth/exceptions/__init__.py (100%) rename src/{ldap_protocol => application}/auth/exceptions/mfa.py (100%) rename src/{ldap_protocol => application}/auth/mfa_manager.py (96%) rename src/{ldap_protocol => application}/auth/schemas.py (98%) rename src/{ldap_protocol => application}/auth/setup_gateway.py (95%) rename src/{ldap_protocol => application}/auth/use_cases.py (91%) rename src/{ldap_protocol => application}/auth/utils.py (94%) rename src/{ldap_protocol => application}/custom_requests/__init__.py (100%) rename src/{ldap_protocol => application}/custom_requests/rename.py (94%) rename src/{ldap_protocol => application}/data_logger.py (92%) rename src/{ldap_protocol => application}/dependency.py (100%) rename src/{ldap_protocol => application}/dhcp/__init__.py (100%) rename src/{ldap_protocol => application}/dhcp/base.py (100%) rename src/{ldap_protocol => application}/dhcp/dataclasses.py (100%) rename src/{ldap_protocol => application}/dhcp/dhcp_manager_repository.py (100%) rename src/{ldap_protocol => application}/dhcp/enums.py (100%) rename src/{ldap_protocol => application}/dhcp/exceptions.py (100%) rename src/{ldap_protocol => application}/dhcp/kea_dhcp_manager.py (100%) rename src/{ldap_protocol => application}/dhcp/kea_dhcp_repository.py (100%) rename src/{ldap_protocol => application}/dhcp/retorts.py (100%) rename src/{ldap_protocol => application}/dhcp/schemas.py (100%) rename src/{ldap_protocol => application}/dhcp/stub.py (100%) rename src/{ldap_protocol => application}/dhcp/utils.py (100%) rename src/{ldap_protocol => application}/dialogue.py (97%) rename src/{ldap_protocol => application}/dns/__init__.py (100%) rename src/{ldap_protocol => application}/dns/base.py (99%) rename src/{ldap_protocol => application}/dns/dns_gateway.py (98%) rename src/{ldap_protocol => application}/dns/dto.py (100%) rename src/{ldap_protocol => application}/dns/exceptions.py (100%) rename src/{ldap_protocol => application}/dns/remote.py (100%) rename src/{ldap_protocol => application}/dns/selfhosted.py (99%) rename src/{ldap_protocol => application}/dns/stub.py (100%) rename src/{ldap_protocol => application}/dns/use_cases.py (98%) rename src/{ldap_protocol => application}/dns/utils.py (100%) rename src/{ldap_protocol => application}/filter_interpreter.py (99%) rename src/{ldap_protocol => application}/identity/__init__.py (100%) rename src/{ldap_protocol => application}/identity/exceptions.py (100%) rename src/{ldap_protocol => application}/identity/provider.py (94%) rename src/{ldap_protocol => application}/identity/provider_gateway.py (100%) rename src/{ldap_protocol => application}/identity/utils.py (97%) rename src/{ldap_protocol => application}/kerberos/__init__.py (100%) rename src/{ldap_protocol => application}/kerberos/base.py (100%) rename src/{ldap_protocol => application}/kerberos/client.py (98%) rename src/{ldap_protocol => application}/kerberos/exceptions.py (100%) rename src/{ldap_protocol => application}/kerberos/ldap_structure.py (90%) rename src/{ldap_protocol => application}/kerberos/schemas.py (95%) rename src/{ldap_protocol => application}/kerberos/service.py (97%) rename src/{ldap_protocol => application}/kerberos/stub.py (95%) rename src/{ldap_protocol => application}/kerberos/template_render.py (100%) rename src/{ldap_protocol => application}/kerberos/utils.py (100%) rename src/{ldap_protocol => application}/ldap_codes.py (100%) rename src/{ldap_protocol => application}/ldap_requests/__init__.py (100%) rename src/{ldap_protocol => application}/ldap_requests/abandon.py (83%) rename src/{ldap_protocol => application}/ldap_requests/add.py (98%) rename src/{ldap_protocol => application}/ldap_requests/base.py (94%) rename src/{ldap_protocol => application}/ldap_requests/bind.py (92%) rename src/{ldap_protocol => application}/ldap_requests/bind_methods/__init__.py (100%) rename src/{ldap_protocol => application}/ldap_requests/bind_methods/base.py (95%) rename src/{ldap_protocol => application}/ldap_requests/bind_methods/sasl_gssapi.py (96%) rename src/{ldap_protocol => application}/ldap_requests/bind_methods/sasl_plain.py (94%) rename src/{ldap_protocol => application}/ldap_requests/bind_methods/sasl_spnego.py (94%) rename src/{ldap_protocol => application}/ldap_requests/bind_methods/simple.py (96%) rename src/{ldap_protocol => application}/ldap_requests/compare.py (86%) rename src/{ldap_protocol => application}/ldap_requests/contexts.py (81%) rename src/{ldap_protocol => application}/ldap_requests/delete.py (94%) rename src/{ldap_protocol => application}/ldap_requests/exceptions.py (100%) rename src/{ldap_protocol => application}/ldap_requests/extended.py (96%) rename src/{ldap_protocol => application}/ldap_requests/modify.py (98%) rename src/{ldap_protocol => application}/ldap_requests/modify_dn.py (97%) rename src/{ldap_protocol => application}/ldap_requests/search.py (97%) rename src/{ldap_protocol => application}/ldap_responses.py (99%) rename src/{ldap_protocol => application}/ldap_schema/__init__.py (100%) rename src/{ldap_protocol => application}/ldap_schema/attribute_type_dao.py (97%) rename src/{ldap_protocol => application}/ldap_schema/attribute_type_use_case.py (90%) rename src/{ldap_protocol => application}/ldap_schema/attribute_value_validator.py (99%) rename src/{ldap_protocol => application}/ldap_schema/constants.py (100%) rename src/{ldap_protocol => application}/ldap_schema/dto.py (100%) rename src/{ldap_protocol => application}/ldap_schema/entity_type_dao.py (97%) rename src/{ldap_protocol => application}/ldap_schema/entity_type_use_case.py (91%) rename src/{ldap_protocol => application}/ldap_schema/exceptions.py (100%) rename src/{ldap_protocol => application}/ldap_schema/object_class_dao.py (99%) rename src/{ldap_protocol => application}/ldap_schema/object_class_use_case.py (90%) rename src/{ldap_protocol => application}/master_check_use_case.py (100%) rename src/{ldap_protocol => application}/messages.py (100%) rename src/{ldap_protocol => application}/multifactor.py (100%) rename src/{ldap_protocol => application}/objects.py (100%) rename src/{ldap_protocol => application}/permissions_checker.py (94%) rename src/{ldap_protocol => application}/policies/__init__.py (100%) rename src/{ldap_protocol => application}/policies/audit/__init__.py (100%) rename src/{ldap_protocol => application}/policies/audit/audit_use_case.py (99%) rename src/{ldap_protocol => application}/policies/audit/dataclasses.py (97%) rename src/{ldap_protocol => application}/policies/audit/destination_dao.py (100%) rename src/{ldap_protocol => application}/policies/audit/events/__init__.py (100%) rename src/{ldap_protocol => application}/policies/audit/events/dataclasses.py (98%) rename src/{ldap_protocol => application}/policies/audit/events/factory.py (93%) rename src/{ldap_protocol => application}/policies/audit/events/handler.py (98%) rename src/{ldap_protocol => application}/policies/audit/events/managers.py (100%) rename src/{ldap_protocol => application}/policies/audit/events/normalizer.py (98%) rename src/{ldap_protocol => application}/policies/audit/events/sender.py (97%) rename src/{ldap_protocol => application}/policies/audit/events/service_senders/__init__.py (100%) rename src/{ldap_protocol => application}/policies/audit/events/service_senders/base.py (85%) rename src/{ldap_protocol => application}/policies/audit/events/service_senders/rfc5424_serializer.py (98%) rename src/{ldap_protocol => application}/policies/audit/events/service_senders/syslog.py (98%) rename src/{ldap_protocol => application}/policies/audit/exception.py (100%) rename src/{ldap_protocol => application}/policies/audit/monitor.py (94%) rename src/{ldap_protocol => application}/policies/audit/policies_dao.py (100%) rename src/{ldap_protocol => application}/policies/audit/schemas.py (100%) rename src/{ldap_protocol => application}/policies/audit/service.py (100%) rename src/{ldap_protocol => application}/policies/network/__init__.py (100%) rename src/{ldap_protocol => application}/policies/network/dto.py (100%) rename src/{ldap_protocol => application}/policies/network/exceptions.py (100%) rename src/{ldap_protocol => application}/policies/network/gateway.py (97%) rename src/{ldap_protocol => application}/policies/network/use_cases.py (97%) rename src/{ldap_protocol => application}/policies/network/validator_gateway.py (100%) rename src/{ldap_protocol => application}/policies/network/validator_protocol.py (100%) rename src/{ldap_protocol => application}/policies/password/__init__.py (100%) rename src/{ldap_protocol => application}/policies/password/ban_word_repository.py (97%) rename src/{ldap_protocol => application}/policies/password/constants.py (100%) rename src/{ldap_protocol => application}/policies/password/dao.py (98%) rename src/{ldap_protocol => application}/policies/password/dataclasses.py (100%) rename src/{ldap_protocol => application}/policies/password/error_messages.py (100%) rename src/{ldap_protocol => application}/policies/password/exceptions.py (100%) rename src/{ldap_protocol => application}/policies/password/settings.py (100%) rename src/{ldap_protocol => application}/policies/password/use_cases.py (98%) rename src/{ldap_protocol => application}/policies/password/validator.py (99%) rename src/{ldap_protocol => application}/roles/__init__.py (100%) rename src/{ldap_protocol => application}/roles/access_manager.py (99%) rename src/{ldap_protocol => application}/roles/ace_dao.py (98%) rename src/{ldap_protocol => application}/roles/dataclasses.py (95%) rename src/{ldap_protocol => application}/roles/exceptions.py (100%) rename src/{ldap_protocol => application}/roles/role_dao.py (99%) rename src/{ldap_protocol => application}/roles/role_use_case.py (98%) rename src/{ldap_protocol => application}/rootdse/__init__.py (100%) rename src/{ldap_protocol => application}/rootdse/dto.py (100%) rename src/{ldap_protocol => application}/rootdse/gateway.py (100%) rename src/{ldap_protocol => application}/rootdse/gw_protocol.py (100%) rename src/{ldap_protocol => application}/rootdse/netlogon.py (99%) rename src/{ldap_protocol => application}/rootdse/reader.py (98%) rename src/{ldap_protocol => application}/server.py (98%) rename src/{ldap_protocol => application}/session_storage/__init__.py (100%) rename src/{ldap_protocol => application}/session_storage/base.py (100%) rename src/{ldap_protocol => application}/session_storage/exceptions.py (100%) rename src/{ldap_protocol => application}/session_storage/redis.py (100%) rename src/{ldap_protocol => application}/session_storage/repository.py (98%) rename src/{ldap_protocol => application}/udp_server.py (96%) rename src/{ldap_protocol => application}/user_account_control.py (96%) rename src/{ldap_protocol => application}/utils/__init__.py (100%) rename src/{ldap_protocol => application}/utils/async_cache.py (100%) rename src/{ldap_protocol => application}/utils/const.py (100%) rename src/{ldap_protocol => application}/utils/cte.py (100%) rename src/{ldap_protocol => application}/utils/helpers.py (100%) rename src/{ldap_protocol => application}/utils/pagination.py (100%) rename src/{ldap_protocol => application}/utils/queries.py (99%) rename src/{ldap_protocol => application}/utils/raw_definition_parser.py (100%) rename src/{ldap_protocol => application}/utils/udp.py (100%) diff --git a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py index ffacd5f84..80ad04d91 100644 --- a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py +++ b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py @@ -18,12 +18,12 @@ from entities import Attribute, Directory, EntityType, Group from enums import EntityTypeNames from extra.alembic_utils import temporary_stub_column -from ldap_protocol.ldap_schema.attribute_value_validator import ( +from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.roles.role_use_case import RoleUseCase -from ldap_protocol.utils.queries import ( +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.roles.role_use_case import RoleUseCase +from application.utils.queries import ( create_group, get_base_directories, get_filter_from_path, diff --git a/src/alembic/versions/05ddc0bd562a_add_roles.py b/src/alembic/versions/05ddc0bd562a_add_roles.py index 5bff405d2..e1c9d0578 100644 --- a/src/alembic/versions/05ddc0bd562a_add_roles.py +++ b/src/alembic/versions/05ddc0bd562a_add_roles.py @@ -13,8 +13,8 @@ from entities import Directory, Group from extra.alembic_utils import temporary_stub_column -from ldap_protocol.roles.role_use_case import RoleUseCase -from ldap_protocol.utils.queries import get_base_directories +from application.roles.role_use_case import RoleUseCase +from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/275222846605_initial_ldap_schema.py b/src/alembic/versions/275222846605_initial_ldap_schema.py index bc3ef4e55..473dc7ca8 100644 --- a/src/alembic/versions/275222846605_initial_ldap_schema.py +++ b/src/alembic/versions/275222846605_initial_ldap_schema.py @@ -18,9 +18,9 @@ from entities import Attribute, AttributeType, ObjectClass from extra.alembic_utils import temporary_stub_column -from ldap_protocol.ldap_schema.attribute_type_dao import AttributeTypeDAO -from ldap_protocol.ldap_schema.dto import AttributeTypeDTO -from ldap_protocol.utils.raw_definition_parser import ( +from application.ldap_schema.attribute_type_dao import AttributeTypeDAO +from application.ldap_schema.dto import AttributeTypeDTO +from application.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index dee471684..96f9af7fc 100644 --- a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -15,8 +15,8 @@ from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from ldap_protocol.objects import UserAccountControlFlag -from ldap_protocol.utils.helpers import create_integer_hash +from application.objects import UserAccountControlFlag +from application.utils.helpers import create_integer_hash from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/6f8fe2548893_fix_read_only.py b/src/alembic/versions/6f8fe2548893_fix_read_only.py index 8d0f87874..1514875e5 100644 --- a/src/alembic/versions/6f8fe2548893_fix_read_only.py +++ b/src/alembic/versions/6f8fe2548893_fix_read_only.py @@ -15,7 +15,7 @@ from constants import DOMAIN_USERS_GROUP_NAME from entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from ldap_protocol.utils.helpers import create_integer_hash +from application.utils.helpers import create_integer_hash # revision identifiers, used by Alembic. revision = "6f8fe2548893" diff --git a/src/alembic/versions/71e642808369_add_directory_is_system.py b/src/alembic/versions/71e642808369_add_directory_is_system.py index 94e550cb5..0a01237e1 100644 --- a/src/alembic/versions/71e642808369_add_directory_is_system.py +++ b/src/alembic/versions/71e642808369_add_directory_is_system.py @@ -20,7 +20,7 @@ READ_ONLY_GROUP_NAME, ) from entities import Directory -from ldap_protocol.utils.queries import get_base_directories +from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py index 6893c1537..40ed73ab6 100644 --- a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py +++ b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py @@ -14,8 +14,8 @@ from entities import Directory from extra.alembic_utils import temporary_stub_column -from ldap_protocol.roles.role_use_case import RoleUseCase -from ldap_protocol.utils.queries import get_base_directories +from application.roles.role_use_case import RoleUseCase +from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. @@ -37,7 +37,7 @@ @temporary_stub_column("is_system", sa.Boolean()) def upgrade(container: AsyncContainer) -> None: """Upgrade.""" - from ldap_protocol.auth.setup_gateway import SetupGateway + from application.auth.setup_gateway import SetupGateway async def _create_ou_computers(connection: AsyncConnection) -> None: # noqa: ARG001 async with container(scope=Scope.REQUEST) as cnt: diff --git a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py index 26b592787..eea4b34f9 100644 --- a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py +++ b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import Session from entities import PasswordPolicy -from ldap_protocol.policies.password.dataclasses import ( +from application.policies.password.dataclasses import ( DefaultDomainPasswordPolicyPreset, ) diff --git a/src/alembic/versions/ba78cef9700a_initial_entity_type.py b/src/alembic/versions/ba78cef9700a_initial_entity_type.py index 16fd6147d..845eb23f6 100644 --- a/src/alembic/versions/ba78cef9700a_initial_entity_type.py +++ b/src/alembic/versions/ba78cef9700a_initial_entity_type.py @@ -16,10 +16,10 @@ from constants import ENTITY_TYPE_DATAS from entities import Attribute, Directory, User from extra.alembic_utils import temporary_stub_column -from ldap_protocol.ldap_schema.dto import EntityTypeDTO -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase -from ldap_protocol.utils.queries import get_base_directories +from application.ldap_schema.dto import EntityTypeDTO +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.ldap_schema.entity_type_use_case import EntityTypeUseCase +from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index bbf0b1a2e..b9edb17a3 100644 --- a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -14,9 +14,9 @@ from entities import Attribute, Directory, NetworkPolicy from extra.alembic_utils import temporary_stub_column -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.utils.helpers import create_integer_hash -from ldap_protocol.utils.queries import get_base_directories +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.utils.helpers import create_integer_hash +from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py index e2ed19f29..553319416 100644 --- a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py +++ b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py @@ -13,9 +13,9 @@ from entities import EntityType from enums import EntityTypeNames -from ldap_protocol.ldap_schema.dto import EntityTypeDTO -from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase -from ldap_protocol.utils.queries import get_base_directories +from application.ldap_schema.dto import EntityTypeDTO +from application.ldap_schema.entity_type_use_case import EntityTypeUseCase +from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py index 7fd621737..bd46bb439 100644 --- a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py +++ b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py @@ -13,7 +13,7 @@ from entities import Attribute, CatalogueSetting, User from extra.alembic_utils import temporary_stub_column -from ldap_protocol.kerberos import KERBEROS_STATE_NAME +from application.kerberos import KERBEROS_STATE_NAME from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py index 2a2c7d436..9241a9a8c 100644 --- a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py +++ b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py @@ -14,7 +14,7 @@ from sqlalchemy.orm import Session from entities import PasswordPolicy -from ldap_protocol.policies.password.ban_word_repository import ( +from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, ) diff --git a/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py b/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py index 0a64e7fb7..4b517fb8c 100644 --- a/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py +++ b/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py @@ -15,11 +15,11 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from extra.alembic_utils import temporary_stub_column -from ldap_protocol.policies.audit.audit_use_case import AuditUseCase -from ldap_protocol.policies.audit.destination_dao import AuditDestinationDAO -from ldap_protocol.policies.audit.events.managers import RawAuditManager -from ldap_protocol.policies.audit.policies_dao import AuditPoliciesDAO -from ldap_protocol.utils.queries import get_base_directories +from application.policies.audit.audit_use_case import AuditUseCase +from application.policies.audit.destination_dao import AuditDestinationDAO +from application.policies.audit.events.managers import RawAuditManager +from application.policies.audit.policies_dao import AuditPoliciesDAO +from application.utils.queries import get_base_directories # revision identifiers, used by Alembic. revision = "e4d6d99d32bd" diff --git a/src/alembic/versions/fafc3d0b11ec_.py b/src/alembic/versions/fafc3d0b11ec_.py index a7604f07a..9c8e0c7d9 100644 --- a/src/alembic/versions/fafc3d0b11ec_.py +++ b/src/alembic/versions/fafc3d0b11ec_.py @@ -15,10 +15,10 @@ from entities import Directory from extra.alembic_utils import temporary_stub_column -from ldap_protocol.ldap_schema.attribute_value_validator import ( +from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) -from ldap_protocol.utils.queries import ( +from application.utils.queries import ( create_group, get_base_directories, get_search_path, diff --git a/src/api/audit/adapter.py b/src/api/audit/adapter.py index e7a39665d..12447b484 100644 --- a/src/api/audit/adapter.py +++ b/src/api/audit/adapter.py @@ -5,17 +5,17 @@ """ from api.base_adapter import BaseAdapter -from ldap_protocol.policies.audit.dataclasses import ( +from application.policies.audit.dataclasses import ( AuditDestinationDTO, AuditPolicyDTO, ) -from ldap_protocol.policies.audit.schemas import ( +from application.policies.audit.schemas import ( AuditDestinationResponse, AuditDestinationSchemaRequest, AuditPolicyResponse, AuditPolicySchemaRequest, ) -from ldap_protocol.policies.audit.service import AuditService +from application.policies.audit.service import AuditService class AuditPoliciesAdapter(BaseAdapter[AuditService]): diff --git a/src/api/audit/router.py b/src/api/audit/router.py index 6209d0740..3b98ee1e4 100644 --- a/src/api/audit/router.py +++ b/src/api/audit/router.py @@ -17,11 +17,11 @@ ) from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.policies.audit.exception import ( +from application.policies.audit.exception import ( AuditAlreadyExistsError, AuditNotFoundError, ) -from ldap_protocol.policies.audit.schemas import ( +from application.policies.audit.schemas import ( AuditDestinationResponse, AuditDestinationSchemaRequest, AuditPolicyResponse, diff --git a/src/api/auth/adapters/auth.py b/src/api/auth/adapters/auth.py index 50ed85ee7..db8b1b67d 100644 --- a/src/api/auth/adapters/auth.py +++ b/src/api/auth/adapters/auth.py @@ -10,14 +10,14 @@ from fastapi import Request from api.base_adapter import BaseAdapter -from ldap_protocol.auth import AuthManager -from ldap_protocol.auth.dto import SetupDTO -from ldap_protocol.auth.schemas import ( +from application.auth import AuthManager +from application.auth.dto import SetupDTO +from application.auth.schemas import ( MFAChallengeResponse, OAuth2Form, SetupRequest, ) -from ldap_protocol.dialogue import UserSchema +from application.dialogue import UserSchema _convert_request_to_dto = get_converter(SetupRequest, SetupDTO) diff --git a/src/api/auth/adapters/mfa.py b/src/api/auth/adapters/mfa.py index 9fa3b4a02..a4a25fc12 100644 --- a/src/api/auth/adapters/mfa.py +++ b/src/api/auth/adapters/mfa.py @@ -10,10 +10,10 @@ from fastapi.responses import RedirectResponse from api.base_adapter import BaseAdapter -from ldap_protocol.auth import MFAManager -from ldap_protocol.auth.exceptions.mfa import MFATokenError -from ldap_protocol.auth.schemas import MFACreateRequest, MFAGetResponse -from ldap_protocol.multifactor import MFA_HTTP_Creds, MFA_LDAP_Creds +from application.auth import MFAManager +from application.auth.exceptions.mfa import MFATokenError +from application.auth.schemas import MFACreateRequest, MFAGetResponse +from application.multifactor import MFA_HTTP_Creds, MFA_LDAP_Creds class MFAFastAPIAdapter(BaseAdapter[MFAManager]): diff --git a/src/api/auth/adapters/session_gateway.py b/src/api/auth/adapters/session_gateway.py index 165c8db74..681723afe 100644 --- a/src/api/auth/adapters/session_gateway.py +++ b/src/api/auth/adapters/session_gateway.py @@ -6,7 +6,7 @@ from typing import Literal, ParamSpec, TypeVar from api.base_adapter import BaseAdapter -from ldap_protocol.session_storage import SessionRepository +from application.session_storage import SessionRepository _P = ParamSpec("_P") _R = TypeVar("_R") diff --git a/src/api/auth/router_auth.py b/src/api/auth/router_auth.py index a5c98911f..005c2ad20 100644 --- a/src/api/auth/router_auth.py +++ b/src/api/auth/router_auth.py @@ -21,19 +21,19 @@ ) from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.auth.exceptions.mfa import ( +from application.auth.exceptions.mfa import ( MFAAPIError, MFAConnectError, MFARequiredError, MissingMFACredentialsError, ) -from ldap_protocol.auth.schemas import ( +from application.auth.schemas import ( MFAChallengeResponse, OAuth2Form, SetupRequest, ) -from ldap_protocol.dialogue import UserSchema -from ldap_protocol.identity.exceptions import ( +from application.dialogue import UserSchema +from application.identity.exceptions import ( AlreadyConfiguredError, AuthValidationError, ForbiddenError, @@ -42,8 +42,8 @@ UnauthorizedError, UserNotFoundError, ) -from ldap_protocol.kerberos.exceptions import KRBAPIChangePasswordError -from ldap_protocol.session_storage import SessionStorage +from application.kerberos.exceptions import KRBAPIChangePasswordError +from application.session_storage import SessionStorage from .utils import verify_auth diff --git a/src/api/auth/router_mfa.py b/src/api/auth/router_mfa.py index 8e275b242..787077a73 100644 --- a/src/api/auth/router_mfa.py +++ b/src/api/auth/router_mfa.py @@ -26,7 +26,7 @@ ) from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.auth.exceptions.mfa import ( +from application.auth.exceptions.mfa import ( ForbiddenError, InvalidCredentialsError, MFAAPIError, @@ -35,8 +35,8 @@ NetworkPolicyError, NotFoundError, ) -from ldap_protocol.auth.schemas import MFACreateRequest, MFAGetResponse -from ldap_protocol.multifactor import MFA_HTTP_Creds, MFA_LDAP_Creds +from application.auth.schemas import MFACreateRequest, MFAGetResponse +from application.multifactor import MFA_HTTP_Creds, MFA_LDAP_Creds translator = DomainErrorTranslator(DomainCodes.MFA) diff --git a/src/api/auth/session_router.py b/src/api/auth/session_router.py index 43da97542..150bab3ac 100644 --- a/src/api/auth/session_router.py +++ b/src/api/auth/session_router.py @@ -11,7 +11,7 @@ DomainErrorTranslator, ) from enums import DomainCodes -from ldap_protocol.session_storage.exceptions import SessionUserNotFoundError +from application.session_storage.exceptions import SessionUserNotFoundError from .adapters.session_gateway import ( SessionContentResponseSchema, diff --git a/src/api/dhcp/adapter.py b/src/api/dhcp/adapter.py index d063ad144..065c79491 100644 --- a/src/api/dhcp/adapter.py +++ b/src/api/dhcp/adapter.py @@ -7,7 +7,7 @@ from ipaddress import IPv4Address from api.base_adapter import BaseAdapter -from ldap_protocol.dhcp import ( +from application.dhcp import ( AbstractDHCPManager, DHCPChangeStateSchemaRequest, DHCPLeaseSchemaRequest, @@ -19,7 +19,7 @@ DHCPSubnetSchemaAddRequest, DHCPSubnetSchemaResponse, ) -from ldap_protocol.dhcp.dataclasses import ( +from application.dhcp.dataclasses import ( DHCPLease, DHCPOptionData, DHCPPool, diff --git a/src/api/dhcp/router.py b/src/api/dhcp/router.py index a41e806a0..be736540f 100644 --- a/src/api/dhcp/router.py +++ b/src/api/dhcp/router.py @@ -18,7 +18,7 @@ DomainErrorTranslator, ) from enums import DomainCodes -from ldap_protocol.dhcp.exceptions import ( +from application.dhcp.exceptions import ( DHCPAPIError, DHCPEntryAddError, DHCPEntryDeleteError, @@ -27,7 +27,7 @@ DHCPOperationError, DHCPValidationError, ) -from ldap_protocol.dhcp.schemas import ( +from application.dhcp.schemas import ( DHCPChangeStateSchemaRequest, DHCPLeaseSchemaRequest, DHCPLeaseSchemaResponse, diff --git a/src/api/ldap_schema/__init__.py b/src/api/ldap_schema/__init__.py index a0314c320..19361746b 100644 --- a/src/api/ldap_schema/__init__.py +++ b/src/api/ldap_schema/__init__.py @@ -18,7 +18,7 @@ DomainErrorTranslator, ) from enums import DomainCodes -from ldap_protocol.ldap_schema.exceptions import ( +from application.ldap_schema.exceptions import ( AttributeTypeAlreadyExistsError, AttributeTypeCantModifyError, AttributeTypeNotFoundError, diff --git a/src/api/ldap_schema/adapters/attribute_type.py b/src/api/ldap_schema/adapters/attribute_type.py index ad1ea6516..1cbfcddc6 100644 --- a/src/api/ldap_schema/adapters/attribute_type.py +++ b/src/api/ldap_schema/adapters/attribute_type.py @@ -22,15 +22,15 @@ AttributeTypeSchema, AttributeTypeUpdateSchema, ) -from ldap_protocol.ldap_schema.attribute_type_use_case import ( +from application.ldap_schema.attribute_type_use_case import ( AttributeTypeUseCase, ) -from ldap_protocol.ldap_schema.constants import ( +from application.ldap_schema.constants import ( DEFAULT_ATTRIBUTE_TYPE_IS_SYSTEM, DEFAULT_ATTRIBUTE_TYPE_NO_USER_MOD, DEFAULT_ATTRIBUTE_TYPE_SYNTAX, ) -from ldap_protocol.ldap_schema.dto import AttributeTypeDTO +from application.ldap_schema.dto import AttributeTypeDTO def _convert_update_uschema_to_dto( diff --git a/src/api/ldap_schema/adapters/base_ldap_schema_adapter.py b/src/api/ldap_schema/adapters/base_ldap_schema_adapter.py index ebbe17192..497540e7a 100644 --- a/src/api/ldap_schema/adapters/base_ldap_schema_adapter.py +++ b/src/api/ldap_schema/adapters/base_ldap_schema_adapter.py @@ -12,7 +12,7 @@ from pydantic import BaseModel from api.ldap_schema import LimitedListType -from ldap_protocol.utils.pagination import ( +from application.utils.pagination import ( BasePaginationSchema, PaginationParams, PaginationResult, diff --git a/src/api/ldap_schema/adapters/entity_type.py b/src/api/ldap_schema/adapters/entity_type.py index 03199b634..d6b05b7cb 100644 --- a/src/api/ldap_schema/adapters/entity_type.py +++ b/src/api/ldap_schema/adapters/entity_type.py @@ -15,9 +15,9 @@ EntityTypeSchema, EntityTypeUpdateSchema, ) -from ldap_protocol.ldap_schema.constants import DEFAULT_ENTITY_TYPE_IS_SYSTEM -from ldap_protocol.ldap_schema.dto import EntityTypeDTO -from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase +from application.ldap_schema.constants import DEFAULT_ENTITY_TYPE_IS_SYSTEM +from application.ldap_schema.dto import EntityTypeDTO +from application.ldap_schema.entity_type_use_case import EntityTypeUseCase def _convert_update_chema_to_dto( diff --git a/src/api/ldap_schema/adapters/object_class.py b/src/api/ldap_schema/adapters/object_class.py index 7c0199a88..48f06fbe6 100644 --- a/src/api/ldap_schema/adapters/object_class.py +++ b/src/api/ldap_schema/adapters/object_class.py @@ -17,9 +17,9 @@ ObjectClassUpdateSchema, ) from enums import KindType -from ldap_protocol.ldap_schema.constants import DEFAULT_OBJECT_CLASS_IS_SYSTEM -from ldap_protocol.ldap_schema.dto import AttributeTypeDTO, ObjectClassDTO -from ldap_protocol.ldap_schema.object_class_use_case import ObjectClassUseCase +from application.ldap_schema.constants import DEFAULT_OBJECT_CLASS_IS_SYSTEM +from application.ldap_schema.dto import AttributeTypeDTO, ObjectClassDTO +from application.ldap_schema.object_class_use_case import ObjectClassUseCase def _convert_update_schema_to_dto( diff --git a/src/api/ldap_schema/attribute_type_router.py b/src/api/ldap_schema/attribute_type_router.py index a75a1826a..b95ff432f 100644 --- a/src/api/ldap_schema/attribute_type_router.py +++ b/src/api/ldap_schema/attribute_type_router.py @@ -17,7 +17,7 @@ AttributeTypeUpdateSchema, ) from api.utils import require_master_db -from ldap_protocol.utils.pagination import PaginationParams +from application.utils.pagination import PaginationParams @ldap_schema_router.post( diff --git a/src/api/ldap_schema/entity_type_router.py b/src/api/ldap_schema/entity_type_router.py index 129230b8e..75b5906ef 100644 --- a/src/api/ldap_schema/entity_type_router.py +++ b/src/api/ldap_schema/entity_type_router.py @@ -18,7 +18,7 @@ EntityTypeUpdateSchema, ) from api.utils import require_master_db -from ldap_protocol.utils.pagination import PaginationParams +from application.utils.pagination import PaginationParams @ldap_schema_router.post( diff --git a/src/api/ldap_schema/object_class_router.py b/src/api/ldap_schema/object_class_router.py index a6baced69..52bc59d54 100644 --- a/src/api/ldap_schema/object_class_router.py +++ b/src/api/ldap_schema/object_class_router.py @@ -18,7 +18,7 @@ ObjectClassUpdateSchema, ) from api.utils import require_master_db -from ldap_protocol.utils.pagination import PaginationParams +from application.utils.pagination import PaginationParams @ldap_schema_router.post( diff --git a/src/api/ldap_schema/schema.py b/src/api/ldap_schema/schema.py index 9e6453eff..d0ed3088f 100644 --- a/src/api/ldap_schema/schema.py +++ b/src/api/ldap_schema/schema.py @@ -9,11 +9,11 @@ from pydantic import BaseModel, Field from enums import EntityTypeNames, KindType -from ldap_protocol.ldap_schema.constants import ( +from application.ldap_schema.constants import ( DEFAULT_ENTITY_TYPE_IS_SYSTEM, OID_REGEX_PATTERN, ) -from ldap_protocol.utils.pagination import BasePaginationSchema +from application.utils.pagination import BasePaginationSchema _IdT = TypeVar("_IdT", int, None) diff --git a/src/api/main/adapters/dns.py b/src/api/main/adapters/dns.py index 352099fad..19ea9c98e 100644 --- a/src/api/main/adapters/dns.py +++ b/src/api/main/adapters/dns.py @@ -16,14 +16,14 @@ DNSServiceZoneDeleteRequest, DNSServiceZoneUpdateRequest, ) -from ldap_protocol.dns.base import ( +from application.dns.base import ( DNSForwardServerStatus, DNSForwardZone, DNSRecords, DNSServerParam, DNSZone, ) -from ldap_protocol.dns.use_cases import DNSUseCase +from application.dns.use_cases import DNSUseCase class DNSFastAPIAdapter(BaseAdapter[DNSUseCase]): diff --git a/src/api/main/adapters/kerberos.py b/src/api/main/adapters/kerberos.py index 1bbe252e2..72e5f8f81 100644 --- a/src/api/main/adapters/kerberos.py +++ b/src/api/main/adapters/kerberos.py @@ -13,10 +13,10 @@ from api.base_adapter import BaseAdapter from api.main.schema import KerberosSetupRequest -from ldap_protocol.dialogue import LDAPSession, UserSchema -from ldap_protocol.kerberos import KerberosState -from ldap_protocol.kerberos.service import KerberosService -from ldap_protocol.ldap_requests.contexts import LDAPAddRequestContext +from application.dialogue import LDAPSession, UserSchema +from application.kerberos import KerberosState +from application.kerberos.service import KerberosService +from application.ldap_requests.contexts import LDAPAddRequestContext class KerberosFastAPIAdapter(BaseAdapter[KerberosService]): diff --git a/src/api/main/dns_router.py b/src/api/main/dns_router.py index bf3e83e40..1ed800939 100644 --- a/src/api/main/dns_router.py +++ b/src/api/main/dns_router.py @@ -10,7 +10,7 @@ from fastapi_error_map import rule from fastapi_error_map.routing import ErrorAwareRouter -import ldap_protocol.dns.exceptions as dns_exc +import application.dns.exceptions as dns_exc from api.auth.utils import verify_auth from api.error_routing import ( ERROR_MAP_TYPE, @@ -31,7 +31,7 @@ ) from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.dns import ( +from application.dns import ( DNSForwardServerStatus, DNSForwardZone, DNSRecords, diff --git a/src/api/main/krb5_router.py b/src/api/main/krb5_router.py index 9ed36515c..50055293a 100644 --- a/src/api/main/krb5_router.py +++ b/src/api/main/krb5_router.py @@ -26,9 +26,9 @@ from api.main.schema import KerberosSetupRequest from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.dialogue import LDAPSession -from ldap_protocol.kerberos import KerberosState -from ldap_protocol.kerberos.exceptions import ( +from application.dialogue import LDAPSession +from application.kerberos import KerberosState +from application.kerberos.exceptions import ( KerberosBaseDnNotFoundError, KerberosConflictError, KerberosDependencyError, @@ -36,8 +36,8 @@ KerberosUnavailableError, KRBAPIConnectionError, ) -from ldap_protocol.ldap_requests.contexts import LDAPAddRequestContext -from ldap_protocol.utils.const import EmailStr +from application.ldap_requests.contexts import LDAPAddRequestContext +from application.utils.const import EmailStr from .utils import get_ldap_session diff --git a/src/api/main/router.py b/src/api/main/router.py index 174a65afa..ed14705a9 100644 --- a/src/api/main/router.py +++ b/src/api/main/router.py @@ -18,16 +18,16 @@ ) from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.custom_requests.rename import RenameRequest -from ldap_protocol.identity.exceptions import UnauthorizedError -from ldap_protocol.ldap_requests import ( +from application.custom_requests.rename import RenameRequest +from application.identity.exceptions import UnauthorizedError +from application.ldap_requests import ( AddRequest, DeleteRequest, ModifyDNRequest, ModifyRequest, ) -from ldap_protocol.ldap_responses import LDAPResult -from ldap_protocol.utils.queries import set_or_update_primary_group +from application.ldap_responses import LDAPResult +from application.utils.queries import set_or_update_primary_group from .schema import ( PrimaryGroupRequest, diff --git a/src/api/main/schema.py b/src/api/main/schema.py index 537b0af7c..c02de78de 100644 --- a/src/api/main/schema.py +++ b/src/api/main/schema.py @@ -12,15 +12,15 @@ from sqlalchemy.sql.elements import ColumnElement, UnaryExpression from entities import Directory -from ldap_protocol.dns import DNSManagerState, DNSZoneParam, DNSZoneType -from ldap_protocol.filter_interpreter import ( +from application.dns import DNSManagerState, DNSZoneParam, DNSZoneType +from application.filter_interpreter import ( Filter, FilterInterpreterProtocol, StringFilterInterpreter, ) -from ldap_protocol.ldap_requests import SearchRequest as LDAPSearchRequest -from ldap_protocol.ldap_responses import SearchResultDone, SearchResultEntry -from ldap_protocol.utils.const import GRANT_DN_STRING +from application.ldap_requests import SearchRequest as LDAPSearchRequest +from application.ldap_responses import SearchResultDone, SearchResultEntry +from application.utils.const import GRANT_DN_STRING class SearchRequest(LDAPSearchRequest): diff --git a/src/api/main/utils.py b/src/api/main/utils.py index 1401bbb7b..b7d660356 100644 --- a/src/api/main/utils.py +++ b/src/api/main/utils.py @@ -4,7 +4,7 @@ from dishka.integrations.fastapi import inject from api.auth.adapters.auth import AuthFastAPIAdapter -from ldap_protocol.dialogue import LDAPSession +from application.dialogue import LDAPSession @inject diff --git a/src/api/middlewares.py b/src/api/middlewares.py index e4ed3f600..6124039e5 100644 --- a/src/api/middlewares.py +++ b/src/api/middlewares.py @@ -9,7 +9,7 @@ from fastapi import Request, Response -from ldap_protocol.identity import IdentityProvider +from application.identity import IdentityProvider async def proc_time_header_middleware( diff --git a/src/api/network/adapters/network.py b/src/api/network/adapters/network.py index 9316b8c7e..4875ea9c2 100644 --- a/src/api/network/adapters/network.py +++ b/src/api/network/adapters/network.py @@ -19,7 +19,7 @@ PolicyUpdate, SwapResponse, ) -from ldap_protocol.policies.network import ( +from application.policies.network import ( NetworkPolicyDTO, NetworkPolicyUpdateDTO, NetworkPolicyUseCase, diff --git a/src/api/network/router.py b/src/api/network/router.py index 71c87cb5b..e123811a5 100644 --- a/src/api/network/router.py +++ b/src/api/network/router.py @@ -20,7 +20,7 @@ from api.network.adapters.network import NetworkPolicyFastAPIAdapter from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.policies.network.exceptions import ( +from application.policies.network.exceptions import ( LastActivePolicyError, NetworkPolicyAlreadyExistsError, NetworkPolicyNotFoundError, diff --git a/src/api/network/schema.py b/src/api/network/schema.py index 666869927..2d198a547 100644 --- a/src/api/network/schema.py +++ b/src/api/network/schema.py @@ -19,7 +19,7 @@ ) from enums import MFAFlags -from ldap_protocol.utils.helpers import validate_entry +from application.utils.helpers import validate_entry class IPRange(BaseModel): diff --git a/src/api/password_policy/adapter.py b/src/api/password_policy/adapter.py index 81b5d7be1..fed5b5de4 100644 --- a/src/api/password_policy/adapter.py +++ b/src/api/password_policy/adapter.py @@ -12,11 +12,11 @@ from api.base_adapter import BaseAdapter from api.password_policy.schemas import PasswordPolicySchema, PriorityT -from ldap_protocol.policies.password.dataclasses import PasswordPolicyDTO -from ldap_protocol.policies.password.exceptions import ( +from application.policies.password.dataclasses import PasswordPolicyDTO +from application.policies.password.exceptions import ( PasswordBanWordWrongFileExtensionError, ) -from ldap_protocol.policies.password.use_cases import ( +from application.policies.password.use_cases import ( PasswordBanWordUseCases, PasswordPolicyUseCases, UserPasswordHistoryUseCases, diff --git a/src/api/password_policy/error_utils.py b/src/api/password_policy/error_utils.py index 201f2b823..6a28e5b6e 100644 --- a/src/api/password_policy/error_utils.py +++ b/src/api/password_policy/error_utils.py @@ -9,8 +9,8 @@ from api.error_routing import ERROR_MAP_TYPE, DomainErrorTranslator from enums import DomainCodes -from ldap_protocol.permissions_checker import AuthorizationError -from ldap_protocol.policies.password.exceptions import ( +from application.permissions_checker import AuthorizationError +from application.policies.password.exceptions import ( PasswordBanWordWrongFileExtensionError, PasswordPolicyAgeDaysError, PasswordPolicyAlreadyExistsError, diff --git a/src/api/password_policy/password_policy_router.py b/src/api/password_policy/password_policy_router.py index 36bd206c3..6453e08a0 100644 --- a/src/api/password_policy/password_policy_router.py +++ b/src/api/password_policy/password_policy_router.py @@ -14,7 +14,7 @@ from api.password_policy.error_utils import error_map from api.password_policy.schemas import PasswordPolicySchema from api.utils import require_master_db -from ldap_protocol.utils.const import GRANT_DN_STRING +from application.utils.const import GRANT_DN_STRING from .schemas import PriorityT diff --git a/src/api/password_policy/schemas.py b/src/api/password_policy/schemas.py index 840383c82..de322385d 100644 --- a/src/api/password_policy/schemas.py +++ b/src/api/password_policy/schemas.py @@ -8,10 +8,10 @@ from pydantic import BaseModel, Field, model_validator -from ldap_protocol.policies.password.constants import ( +from application.policies.password.constants import ( PasswordValidatorLanguageType, ) -from ldap_protocol.policies.password.exceptions import ( +from application.policies.password.exceptions import ( PasswordPolicyAgeDaysError, PasswordPolicyPriorityError, ) diff --git a/src/api/password_policy/user_password_history_router.py b/src/api/password_policy/user_password_history_router.py index 9af233c12..782903506 100644 --- a/src/api/password_policy/user_password_history_router.py +++ b/src/api/password_policy/user_password_history_router.py @@ -20,7 +20,7 @@ from api.password_policy.adapter import UserPasswordHistoryResetFastAPIAdapter from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.identity.exceptions import ( +from application.identity.exceptions import ( AuthorizationError, UserNotFoundError, ) diff --git a/src/api/shadow/adapter.py b/src/api/shadow/adapter.py index 3062a0bb4..f352a2efc 100644 --- a/src/api/shadow/adapter.py +++ b/src/api/shadow/adapter.py @@ -7,7 +7,7 @@ from ipaddress import IPv4Address from api.base_adapter import BaseAdapter -from ldap_protocol.auth import AuthManager, MFAManager +from application.auth import AuthManager, MFAManager class ShadowAdapter(BaseAdapter): diff --git a/src/api/shadow/router.py b/src/api/shadow/router.py index b708babb0..fd44010d1 100644 --- a/src/api/shadow/router.py +++ b/src/api/shadow/router.py @@ -19,14 +19,14 @@ ) from api.utils import require_master_db from enums import DomainCodes -from ldap_protocol.auth.exceptions.mfa import ( +from application.auth.exceptions.mfa import ( AuthenticationError, InvalidCredentialsError, NetworkPolicyError, ) -from ldap_protocol.policies.password.exceptions import PasswordPolicyError -from ldap_protocol.rootdse.dto import DomainControllerInfo -from ldap_protocol.rootdse.reader import DCInfoReader +from application.policies.password.exceptions import PasswordPolicyError +from application.rootdse.dto import DomainControllerInfo +from application.rootdse.reader import DCInfoReader from .adapter import ShadowAdapter diff --git a/src/api/utils.py b/src/api/utils.py index 5f94d56f6..25235a66d 100644 --- a/src/api/utils.py +++ b/src/api/utils.py @@ -8,7 +8,7 @@ from dishka.integrations.fastapi import inject from fastapi import HTTPException, status -from ldap_protocol.master_check_use_case import MasterCheckUseCase +from application.master_check_use_case import MasterCheckUseCase @inject diff --git a/src/ldap_protocol/__init__.py b/src/application/__init__.py similarity index 100% rename from src/ldap_protocol/__init__.py rename to src/application/__init__.py diff --git a/src/ldap_protocol/asn1parser.py b/src/application/asn1parser.py similarity index 100% rename from src/ldap_protocol/asn1parser.py rename to src/application/asn1parser.py diff --git a/src/ldap_protocol/auth/__init__.py b/src/application/auth/__init__.py similarity index 100% rename from src/ldap_protocol/auth/__init__.py rename to src/application/auth/__init__.py diff --git a/src/ldap_protocol/auth/auth_manager.py b/src/application/auth/auth_manager.py similarity index 90% rename from src/ldap_protocol/auth/auth_manager.py rename to src/application/auth/auth_manager.py index d2e9073fd..c79e2a994 100644 --- a/src/ldap_protocol/auth/auth_manager.py +++ b/src/application/auth/auth_manager.py @@ -14,30 +14,30 @@ from config import Settings from entities import User from enums import AuthorizationRules, MFAFlags -from ldap_protocol.auth.dto import SetupDTO -from ldap_protocol.auth.mfa_manager import MFAManager -from ldap_protocol.auth.schemas import LoginDTO, OAuth2Form -from ldap_protocol.auth.use_cases import SetupUseCase -from ldap_protocol.auth.utils import authenticate_user -from ldap_protocol.dialogue import UserSchema -from ldap_protocol.identity import IdentityProvider -from ldap_protocol.identity.exceptions import ( +from application.auth.dto import SetupDTO +from application.auth.mfa_manager import MFAManager +from application.auth.schemas import LoginDTO, OAuth2Form +from application.auth.use_cases import SetupUseCase +from application.auth.utils import authenticate_user +from application.dialogue import UserSchema +from application.identity import IdentityProvider +from application.identity.exceptions import ( AuthValidationError, LoginFailedError, PasswordPolicyError, UnauthorizedError, UserNotFoundError, ) -from ldap_protocol.kerberos import AbstractKadmin -from ldap_protocol.multifactor import MultifactorAPI -from ldap_protocol.objects import UserAccountControlFlag -from ldap_protocol.policies.audit.monitor import AuditMonitorUseCase -from ldap_protocol.policies.network import NetworkPolicyValidatorUseCase -from ldap_protocol.policies.password import PasswordPolicyUseCases -from ldap_protocol.session_storage import SessionStorage -from ldap_protocol.session_storage.repository import SessionRepository -from ldap_protocol.user_account_control import get_check_uac -from ldap_protocol.utils.queries import get_user +from application.kerberos import AbstractKadmin +from application.multifactor import MultifactorAPI +from application.objects import UserAccountControlFlag +from application.policies.audit.monitor import AuditMonitorUseCase +from application.policies.network import NetworkPolicyValidatorUseCase +from application.policies.password import PasswordPolicyUseCases +from application.session_storage import SessionStorage +from application.session_storage.repository import SessionRepository +from application.user_account_control import get_check_uac +from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/ldap_protocol/auth/dto.py b/src/application/auth/dto.py similarity index 100% rename from src/ldap_protocol/auth/dto.py rename to src/application/auth/dto.py diff --git a/src/ldap_protocol/auth/exceptions/__init__.py b/src/application/auth/exceptions/__init__.py similarity index 100% rename from src/ldap_protocol/auth/exceptions/__init__.py rename to src/application/auth/exceptions/__init__.py diff --git a/src/ldap_protocol/auth/exceptions/mfa.py b/src/application/auth/exceptions/mfa.py similarity index 100% rename from src/ldap_protocol/auth/exceptions/mfa.py rename to src/application/auth/exceptions/mfa.py diff --git a/src/ldap_protocol/auth/mfa_manager.py b/src/application/auth/mfa_manager.py similarity index 96% rename from src/ldap_protocol/auth/mfa_manager.py rename to src/application/auth/mfa_manager.py index b6d52824b..0694313c6 100644 --- a/src/ldap_protocol/auth/mfa_manager.py +++ b/src/application/auth/mfa_manager.py @@ -21,7 +21,7 @@ from config import Settings from entities import CatalogueSetting, NetworkPolicy, User from enums import AuthorizationRules, MFAChallengeStatuses, MFAFlags -from ldap_protocol.auth.exceptions.mfa import ( +from application.auth.exceptions.mfa import ( AuthenticationError, ForbiddenError, InvalidCredentialsError, @@ -31,24 +31,24 @@ MissingMFACredentialsError, NetworkPolicyError, ) -from ldap_protocol.auth.schemas import ( +from application.auth.schemas import ( MFAChallengeResponse, MFACreateRequest, MFAGetResponse, ) -from ldap_protocol.auth.utils import get_user -from ldap_protocol.identity import IdentityProvider -from ldap_protocol.multifactor import ( +from application.auth.utils import get_user +from application.identity import IdentityProvider +from application.multifactor import ( Creds, LDAPMultiFactorAPI, MFA_HTTP_Creds, MFA_LDAP_Creds, MultifactorAPI, ) -from ldap_protocol.policies.audit.monitor import AuditMonitorUseCase -from ldap_protocol.policies.network import NetworkPolicyValidatorUseCase -from ldap_protocol.session_storage import SessionStorage -from ldap_protocol.session_storage.repository import SessionRepository +from application.policies.audit.monitor import AuditMonitorUseCase +from application.policies.network import NetworkPolicyValidatorUseCase +from application.session_storage import SessionStorage +from application.session_storage.repository import SessionRepository from password_utils import PasswordUtils from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/ldap_protocol/auth/schemas.py b/src/application/auth/schemas.py similarity index 98% rename from src/ldap_protocol/auth/schemas.py rename to src/application/auth/schemas.py index fe786189c..03fdd3fdd 100644 --- a/src/ldap_protocol/auth/schemas.py +++ b/src/application/auth/schemas.py @@ -21,7 +21,7 @@ field_validator, ) -from ldap_protocol.utils.const import EmailStr +from application.utils.const import EmailStr _domain_re = re.compile( "^((?!-)[A-Za-z0-9-]" + "{1,63}(? None: diff --git a/src/extra/scripts/update_krb5_config.py b/src/extra/scripts/update_krb5_config.py index b0ecda0f6..e7865b09f 100644 --- a/src/extra/scripts/update_krb5_config.py +++ b/src/extra/scripts/update_krb5_config.py @@ -10,8 +10,8 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from ldap_protocol.kerberos.utils import get_system_container_dn -from ldap_protocol.utils.queries import get_base_directories +from application.kerberos.utils import get_system_container_dn +from application.utils.queries import get_base_directories KRB5_CONF_PATH = Path("/etc/krb5kdc/krb5.conf") KDC_CONF_PATH = Path("/etc/krb5kdc/kdc.conf") diff --git a/src/extra/scripts/update_status_proccess_events.py b/src/extra/scripts/update_status_proccess_events.py index c289da91b..917751f5a 100644 --- a/src/extra/scripts/update_status_proccess_events.py +++ b/src/extra/scripts/update_status_proccess_events.py @@ -4,7 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from ldap_protocol.policies.audit.audit_use_case import AuditUseCase +from application.policies.audit.audit_use_case import AuditUseCase async def update_status_process_events(audit_use_case: AuditUseCase) -> None: diff --git a/src/ioc.py b/src/ioc.py index 386b0a739..1d5f31d97 100644 --- a/src/ioc.py +++ b/src/ioc.py @@ -40,10 +40,10 @@ from api.shadow.adapter import ShadowAdapter from authorization_provider_protocol import AuthorizationProviderProtocol from config import Settings -from ldap_protocol.auth import AuthManager, MFAManager -from ldap_protocol.auth.setup_gateway import SetupGateway -from ldap_protocol.auth.use_cases import SetupUseCase -from ldap_protocol.dhcp import ( +from application.auth import AuthManager, MFAManager +from application.auth.setup_gateway import SetupGateway +from application.auth.use_cases import SetupUseCase +from application.dhcp import ( AbstractDHCPManager, DHCPAPIRepository, DHCPManagerRepository, @@ -51,22 +51,22 @@ get_dhcp_api_repository_class, get_dhcp_manager_class, ) -from ldap_protocol.dialogue import LDAPSession -from ldap_protocol.dns import ( +from application.dialogue import LDAPSession +from application.dns import ( AbstractDNSManager, DNSManagerSettings, get_dns_manager_class, ) -from ldap_protocol.dns.dns_gateway import DNSStateGateway -from ldap_protocol.dns.use_cases import DNSUseCase -from ldap_protocol.dns.utils import resolve_dns_server_ip -from ldap_protocol.identity import IdentityProvider -from ldap_protocol.identity.provider_gateway import IdentityProviderGateway -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_requests.contexts import ( +from application.dns.dns_gateway import DNSStateGateway +from application.dns.use_cases import DNSUseCase +from application.dns.utils import resolve_dns_server_ip +from application.identity import IdentityProvider +from application.identity.provider_gateway import IdentityProviderGateway +from application.kerberos import AbstractKadmin, get_kerberos_class +from application.kerberos.ldap_structure import KRBLDAPStructureManager +from application.kerberos.service import KerberosService +from application.kerberos.template_render import KRBTemplateRenderer +from application.ldap_requests.contexts import ( LDAPAbandonRequestContext, LDAPAddRequestContext, LDAPBindRequestContext, @@ -77,22 +77,22 @@ LDAPSearchRequestContext, LDAPUnbindRequestContext, ) -from ldap_protocol.ldap_schema.attribute_type_dao import AttributeTypeDAO -from ldap_protocol.ldap_schema.attribute_type_use_case import ( +from application.ldap_schema.attribute_type_dao import AttributeTypeDAO +from application.ldap_schema.attribute_type_use_case import ( AttributeTypeUseCase, ) -from ldap_protocol.ldap_schema.attribute_value_validator import ( +from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase -from ldap_protocol.ldap_schema.object_class_dao import ObjectClassDAO -from ldap_protocol.ldap_schema.object_class_use_case import ObjectClassUseCase -from ldap_protocol.master_check_use_case import ( +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.ldap_schema.entity_type_use_case import EntityTypeUseCase +from application.ldap_schema.object_class_dao import ObjectClassDAO +from application.ldap_schema.object_class_use_case import ObjectClassUseCase +from application.master_check_use_case import ( MasterCheckUseCase, MasterGatewayProtocol, ) -from ldap_protocol.multifactor import ( +from application.multifactor import ( Creds, LDAPMultiFactorAPI, MFA_HTTP_Creds, @@ -100,57 +100,57 @@ MultifactorAPI, get_creds, ) -from ldap_protocol.permissions_checker import AuthorizationProvider -from ldap_protocol.policies.audit.audit_use_case import AuditUseCase -from ldap_protocol.policies.audit.destination_dao import AuditDestinationDAO -from ldap_protocol.policies.audit.events.dataclasses import ( +from application.permissions_checker import AuthorizationProvider +from application.policies.audit.audit_use_case import AuditUseCase +from application.policies.audit.destination_dao import AuditDestinationDAO +from application.policies.audit.events.dataclasses import ( NormalizedAuditEvent, NormalizedAuditEventRedis, ) -from ldap_protocol.policies.audit.events.managers import ( +from application.policies.audit.events.managers import ( AuditRedisClient, NormalizedAuditManager, RawAuditManager, ) -from ldap_protocol.policies.audit.events.sender import ( +from application.policies.audit.events.sender import ( AuditEventSenderManager, AuditLogger, ) -from ldap_protocol.policies.audit.monitor import ( +from application.policies.audit.monitor import ( AuditMonitor, AuditMonitorUseCase, ) -from ldap_protocol.policies.audit.policies_dao import AuditPoliciesDAO -from ldap_protocol.policies.audit.service import AuditService -from ldap_protocol.policies.network import ( +from application.policies.audit.policies_dao import AuditPoliciesDAO +from application.policies.audit.service import AuditService +from application.policies.network import ( NetworkPolicyGateway, NetworkPolicyUseCase, NetworkPolicyValidatorGateway, NetworkPolicyValidatorProtocol, NetworkPolicyValidatorUseCase, ) -from ldap_protocol.policies.password import ( +from application.policies.password import ( PasswordPolicyDAO, PasswordPolicyUseCases, PasswordPolicyValidator, ) -from ldap_protocol.policies.password.ban_word_repository import ( +from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, ) -from ldap_protocol.policies.password.settings import PasswordValidatorSettings -from ldap_protocol.policies.password.use_cases import ( +from application.policies.password.settings import PasswordValidatorSettings +from application.policies.password.use_cases import ( PasswordBanWordUseCases, UserPasswordHistoryUseCases, ) -from ldap_protocol.roles.access_manager import AccessManager -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.role_dao import RoleDAO -from ldap_protocol.roles.role_use_case import RoleUseCase -from ldap_protocol.rootdse.gateway import SADomainGateway -from ldap_protocol.rootdse.gw_protocol import DomainReadProtocol -from ldap_protocol.rootdse.reader import DCInfoReader, RootDSEReader -from ldap_protocol.session_storage import RedisSessionStorage, SessionStorage -from ldap_protocol.session_storage.repository import SessionRepository +from application.roles.access_manager import AccessManager +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.role_dao import RoleDAO +from application.roles.role_use_case import RoleUseCase +from application.rootdse.gateway import SADomainGateway +from application.rootdse.gw_protocol import DomainReadProtocol +from application.rootdse.reader import DCInfoReader, RootDSEReader +from application.session_storage import RedisSessionStorage, SessionStorage +from application.session_storage.repository import SessionRepository from password_utils import PasswordUtils from infrastructure.pg.master_gateway import PGMasterGateway diff --git a/src/multidirectory.py b/src/multidirectory.py index 22a19259d..d5d6b5280 100644 --- a/src/multidirectory.py +++ b/src/multidirectory.py @@ -49,12 +49,12 @@ MFACredsProvider, MFAProvider, ) -from ldap_protocol.dependency import resolve_deps -from ldap_protocol.identity.exceptions import UnauthorizedError -from ldap_protocol.policies.audit.events.handler import AuditEventHandler -from ldap_protocol.policies.audit.events.sender import AuditEventSenderManager -from ldap_protocol.server import PoolClientHandler, ServerLogger -from ldap_protocol.udp_server import CLDAPUDPServer +from application.dependency import resolve_deps +from application.identity.exceptions import UnauthorizedError +from application.policies.audit.events.handler import AuditEventHandler +from application.policies.audit.events.sender import AuditEventSenderManager +from application.server import PoolClientHandler, ServerLogger +from application.udp_server import CLDAPUDPServer from schedule import scheduler_factory diff --git a/src/password_utils.py b/src/password_utils.py index 27957757c..e71cdfc38 100644 --- a/src/password_utils.py +++ b/src/password_utils.py @@ -9,7 +9,7 @@ from passlib.context import CryptContext from pydantic import BaseModel, ConfigDict -from ldap_protocol.utils.helpers import ft_to_dt +from application.utils.helpers import ft_to_dt class PasswordUtils(BaseModel): diff --git a/src/schedule.py b/src/schedule.py index 35e59a85d..06ad2e301 100644 --- a/src/schedule.py +++ b/src/schedule.py @@ -16,7 +16,7 @@ update_status_process_events, ) from ioc import MainProvider -from ldap_protocol.dependency import resolve_deps +from application.dependency import resolve_deps type task_type = Callable[..., Coroutine] diff --git a/tests/conftest.py b/tests/conftest.py index eddfb7215..8ac4ad1b1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -67,27 +67,27 @@ from entities import AttributeType from enums import AuthorizationRules from ioc import AuditRedisClient, MFACredsProvider, SessionStorageClient -from ldap_protocol.auth import AuthManager, MFAManager -from ldap_protocol.auth.setup_gateway import SetupGateway -from ldap_protocol.auth.use_cases import SetupUseCase -from ldap_protocol.dhcp import AbstractDHCPManager, StubDHCPManager -from ldap_protocol.dialogue import LDAPSession -from ldap_protocol.dns import ( +from application.auth import AuthManager, MFAManager +from application.auth.setup_gateway import SetupGateway +from application.auth.use_cases import SetupUseCase +from application.dhcp import AbstractDHCPManager, StubDHCPManager +from application.dialogue import LDAPSession +from application.dns import ( AbstractDNSManager, DNSManagerSettings, StubDNSManager, ) -from ldap_protocol.dns.dns_gateway import DNSStateGateway -from ldap_protocol.dns.dto import DNSSettingDTO -from ldap_protocol.dns.use_cases import DNSUseCase -from ldap_protocol.identity import IdentityProvider -from ldap_protocol.identity.provider_gateway import IdentityProviderGateway -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_requests.contexts import ( +from application.dns.dns_gateway import DNSStateGateway +from application.dns.dto import DNSSettingDTO +from application.dns.use_cases import DNSUseCase +from application.identity import IdentityProvider +from application.identity.provider_gateway import IdentityProviderGateway +from application.kerberos import AbstractKadmin +from application.kerberos.ldap_structure import KRBLDAPStructureManager +from application.kerberos.service import KerberosService +from application.kerberos.template_render import KRBTemplateRenderer +from application.ldap_requests.bind import BindRequest +from application.ldap_requests.contexts import ( LDAPAbandonRequestContext, LDAPAddRequestContext, LDAPBindRequestContext, @@ -98,68 +98,68 @@ LDAPSearchRequestContext, LDAPUnbindRequestContext, ) -from ldap_protocol.ldap_schema.attribute_type_dao import AttributeTypeDAO -from ldap_protocol.ldap_schema.attribute_type_use_case import ( +from application.ldap_schema.attribute_type_dao import AttributeTypeDAO +from application.ldap_schema.attribute_type_use_case import ( AttributeTypeUseCase, ) -from ldap_protocol.ldap_schema.attribute_value_validator import ( +from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) -from ldap_protocol.ldap_schema.dto import EntityTypeDTO -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.ldap_schema.entity_type_use_case import EntityTypeUseCase -from ldap_protocol.ldap_schema.object_class_dao import ObjectClassDAO -from ldap_protocol.ldap_schema.object_class_use_case import ObjectClassUseCase -from ldap_protocol.master_check_use_case import ( +from application.ldap_schema.dto import EntityTypeDTO +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.ldap_schema.entity_type_use_case import EntityTypeUseCase +from application.ldap_schema.object_class_dao import ObjectClassDAO +from application.ldap_schema.object_class_use_case import ObjectClassUseCase +from application.master_check_use_case import ( MasterCheckUseCase, MasterGatewayProtocol, ) -from ldap_protocol.multifactor import LDAPMultiFactorAPI, MultifactorAPI -from ldap_protocol.permissions_checker import AuthorizationProvider -from ldap_protocol.policies.audit.audit_use_case import AuditUseCase -from ldap_protocol.policies.audit.destination_dao import AuditDestinationDAO -from ldap_protocol.policies.audit.events.managers import ( +from application.multifactor import LDAPMultiFactorAPI, MultifactorAPI +from application.permissions_checker import AuthorizationProvider +from application.policies.audit.audit_use_case import AuditUseCase +from application.policies.audit.destination_dao import AuditDestinationDAO +from application.policies.audit.events.managers import ( NormalizedAuditManager, RawAuditManager, ) -from ldap_protocol.policies.audit.monitor import ( +from application.policies.audit.monitor import ( AuditMonitor, AuditMonitorUseCase, ) -from ldap_protocol.policies.audit.policies_dao import AuditPoliciesDAO -from ldap_protocol.policies.audit.service import AuditService -from ldap_protocol.policies.network import ( +from application.policies.audit.policies_dao import AuditPoliciesDAO +from application.policies.audit.service import AuditService +from application.policies.network import ( NetworkPolicyGateway, NetworkPolicyUseCase, NetworkPolicyValidatorGateway, NetworkPolicyValidatorProtocol, NetworkPolicyValidatorUseCase, ) -from ldap_protocol.policies.password import ( +from application.policies.password import ( PasswordPolicyDAO, PasswordPolicyUseCases, PasswordPolicyValidator, ) -from ldap_protocol.policies.password.ban_word_repository import ( +from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, ) -from ldap_protocol.policies.password.settings import PasswordValidatorSettings -from ldap_protocol.policies.password.use_cases import ( +from application.policies.password.settings import PasswordValidatorSettings +from application.policies.password.use_cases import ( PasswordBanWordUseCases, UserPasswordHistoryUseCases, ) -from ldap_protocol.roles.access_manager import AccessManager -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.dataclasses import RoleDTO -from ldap_protocol.roles.role_dao import RoleDAO -from ldap_protocol.roles.role_use_case import RoleUseCase -from ldap_protocol.rootdse.gateway import SADomainGateway -from ldap_protocol.rootdse.gw_protocol import DomainReadProtocol -from ldap_protocol.rootdse.reader import DCInfoReader, RootDSEReader -from ldap_protocol.server import PoolClientHandler -from ldap_protocol.session_storage import RedisSessionStorage, SessionStorage -from ldap_protocol.session_storage.repository import SessionRepository -from ldap_protocol.utils.queries import get_user +from application.roles.access_manager import AccessManager +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.dataclasses import RoleDTO +from application.roles.role_dao import RoleDAO +from application.roles.role_use_case import RoleUseCase +from application.rootdse.gateway import SADomainGateway +from application.rootdse.gw_protocol import DomainReadProtocol +from application.rootdse.reader import DCInfoReader, RootDSEReader +from application.server import PoolClientHandler +from application.session_storage import RedisSessionStorage, SessionStorage +from application.session_storage.repository import SessionRepository +from application.utils.queries import get_user from password_utils import PasswordUtils from repo.pg.master_gateway import PGMasterGateway from tests.constants import TEST_DATA diff --git a/tests/constants.py b/tests/constants.py index 2163898ed..965026af1 100644 --- a/tests/constants.py +++ b/tests/constants.py @@ -12,7 +12,7 @@ USERS_CONTAINER_NAME, ) from enums import SamAccountTypeCodes -from ldap_protocol.objects import UserAccountControlFlag +from application.objects import UserAccountControlFlag TEST_DATA = [ { diff --git a/tests/search_request_datasets.py b/tests/search_request_datasets.py index cb1e7a317..c2595901d 100644 --- a/tests/search_request_datasets.py +++ b/tests/search_request_datasets.py @@ -4,7 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE. """ -from ldap_protocol.objects import UserAccountControlFlag +from application.objects import UserAccountControlFlag test_search_filter_account_expires_dataset = [ "(accountExpires=*)", diff --git a/tests/test_api/test_audit/test_router.py b/tests/test_api/test_audit/test_router.py index 2abc682b6..d398aa800 100644 --- a/tests/test_api/test_audit/test_router.py +++ b/tests/test_api/test_audit/test_router.py @@ -11,11 +11,11 @@ from httpx import AsyncClient from enums import AuditDestinationProtocolType, AuditDestinationServiceType -from ldap_protocol.policies.audit.dataclasses import ( +from application.policies.audit.dataclasses import ( AuditDestinationDTO, AuditPolicyDTO, ) -from ldap_protocol.policies.audit.schemas import ( +from application.policies.audit.schemas import ( AuditDestinationSchemaRequest, AuditPolicySchemaRequest, ) diff --git a/tests/test_api/test_auth/test_identity_provider.py b/tests/test_api/test_auth/test_identity_provider.py index 788da08e5..11c4d8c0c 100644 --- a/tests/test_api/test_auth/test_identity_provider.py +++ b/tests/test_api/test_auth/test_identity_provider.py @@ -19,12 +19,12 @@ from api.auth.utils import get_ip_from_request, get_user_agent_from_request from config import Settings -from ldap_protocol.dialogue import UserSchema -from ldap_protocol.identity import IdentityProvider -from ldap_protocol.identity.exceptions import ErrorCodes, UnauthorizedError -from ldap_protocol.identity.provider_gateway import IdentityProviderGateway -from ldap_protocol.session_storage.base import SessionStorage -from ldap_protocol.session_storage.exceptions import ( +from application.dialogue import UserSchema +from application.identity import IdentityProvider +from application.identity.exceptions import ErrorCodes, UnauthorizedError +from application.identity.provider_gateway import IdentityProviderGateway +from application.session_storage.base import SessionStorage +from application.session_storage.exceptions import ( SessionStorageInvalidDataError, ) from tests.conftest import TestProvider diff --git a/tests/test_api/test_auth/test_router.py b/tests/test_api/test_auth/test_router.py index 0256c0463..0e417081f 100644 --- a/tests/test_api/test_auth/test_router.py +++ b/tests/test_api/test_auth/test_router.py @@ -19,12 +19,12 @@ from entities import CatalogueSetting, Directory, Group, NetworkPolicy, Role from enums import AceType, MFAChallengeStatuses, MFAFlags, RoleScope -from ldap_protocol.auth.utils import authenticate_user -from ldap_protocol.kerberos import AbstractKadmin -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.ldap_requests.modify import Operation -from ldap_protocol.session_storage import SessionStorage -from ldap_protocol.utils.queries import get_filter_from_path +from application.auth.utils import authenticate_user +from application.kerberos import AbstractKadmin +from application.ldap_codes import LDAPCodes +from application.ldap_requests.modify import Operation +from application.session_storage import SessionStorage +from application.utils.queries import get_filter_from_path from password_utils import PasswordUtils from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_api/test_auth/test_sessions.py b/tests/test_api/test_auth/test_sessions.py index e2c6d3fd9..7eb9f71fe 100644 --- a/tests/test_api/test_auth/test_sessions.py +++ b/tests/test_api/test_auth/test_sessions.py @@ -8,10 +8,10 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.ldap_requests.modify import Operation -from ldap_protocol.session_storage import SessionStorage -from ldap_protocol.utils.queries import get_user +from application.ldap_codes import LDAPCodes +from application.ldap_requests.modify import Operation +from application.session_storage import SessionStorage +from application.utils.queries import get_user from tests.conftest import TestCreds diff --git a/tests/test_api/test_dhcp/test_adapter.py b/tests/test_api/test_dhcp/test_adapter.py index 5d2dd4b26..c147a3c25 100644 --- a/tests/test_api/test_dhcp/test_adapter.py +++ b/tests/test_api/test_dhcp/test_adapter.py @@ -11,14 +11,14 @@ from api.dhcp.adapter import DHCPAdapter from authorization_provider_protocol import AuthorizationProviderProtocol -from ldap_protocol.dhcp.dataclasses import ( +from application.dhcp.dataclasses import ( DHCPLease, DHCPOptionData, DHCPPool, DHCPReservation, DHCPSubnet, ) -from ldap_protocol.dhcp.schemas import ( +from application.dhcp.schemas import ( DHCPLeaseSchemaRequest, DHCPReservationSchemaRequest, DHCPSubnetSchemaAddRequest, diff --git a/tests/test_api/test_dhcp/test_router.py b/tests/test_api/test_dhcp/test_router.py index 2ea89d0de..9dec91690 100644 --- a/tests/test_api/test_dhcp/test_router.py +++ b/tests/test_api/test_dhcp/test_router.py @@ -11,7 +11,7 @@ from fastapi import status from httpx import AsyncClient -from ldap_protocol.dhcp.dataclasses import ( +from application.dhcp.dataclasses import ( DHCPLease, DHCPLeaseToReservationError, DHCPOptionData, @@ -19,7 +19,7 @@ DHCPReservation, DHCPSubnet, ) -from ldap_protocol.dhcp.exceptions import ( +from application.dhcp.exceptions import ( DHCPAPIError, DHCPEntryAddError, DHCPEntryNotFoundError, diff --git a/tests/test_api/test_main/conftest.py b/tests/test_api/test_main/conftest.py index 1ee2f69ba..ec2b01660 100644 --- a/tests/test_api/test_main/conftest.py +++ b/tests/test_api/test_main/conftest.py @@ -10,14 +10,14 @@ from sqlalchemy.ext.asyncio import AsyncSession from entities import CatalogueSetting -from ldap_protocol.dns import ( +from application.dns import ( DNS_MANAGER_IP_ADDRESS_NAME, DNS_MANAGER_STATE_NAME, DNS_MANAGER_ZONE_NAME, DNSManagerState, ) -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.ldap_requests.modify import Operation +from application.ldap_codes import LDAPCodes +from application.ldap_requests.modify import Operation @pytest_asyncio.fixture(scope="function") diff --git a/tests/test_api/test_main/test_dns.py b/tests/test_api/test_main/test_dns.py index 6d521408c..032f11325 100644 --- a/tests/test_api/test_main/test_dns.py +++ b/tests/test_api/test_main/test_dns.py @@ -6,7 +6,7 @@ from httpx import AsyncClient from starlette import status -from ldap_protocol.dns import ( +from application.dns import ( AbstractDNSManager, DNSManagerState, DNSServerParam, diff --git a/tests/test_api/test_main/test_kadmin.py b/tests/test_api/test_main/test_kadmin.py index b96d6c6c5..5daecf642 100644 --- a/tests/test_api/test_main/test_kadmin.py +++ b/tests/test_api/test_main/test_kadmin.py @@ -10,13 +10,13 @@ from httpx import AsyncClient from config import Settings -from ldap_protocol.kerberos import AbstractKadmin, KerberosState -from ldap_protocol.kerberos.exceptions import ( +from application.kerberos import AbstractKadmin, KerberosState +from application.kerberos.exceptions import ( KRBAPIChangePasswordError, KRBAPIPrincipalNotFoundError, ) -from ldap_protocol.ldap_requests.bind import LDAPCodes, SimpleAuthentication -from ldap_protocol.ldap_requests.contexts import LDAPBindRequestContext +from application.ldap_requests.bind import LDAPCodes, SimpleAuthentication +from application.ldap_requests.contexts import LDAPBindRequestContext from password_utils import PasswordUtils from tests.conftest import MutePolicyBindRequest, TestCreds diff --git a/tests/test_api/test_main/test_multifactor.py b/tests/test_api/test_main/test_multifactor.py index ba2c83d41..04ab56bcd 100644 --- a/tests/test_api/test_main/test_multifactor.py +++ b/tests/test_api/test_main/test_multifactor.py @@ -6,7 +6,7 @@ import pytest from config import Settings -from ldap_protocol.multifactor import MultifactorAPI +from application.multifactor import MultifactorAPI @pytest.mark.asyncio diff --git a/tests/test_api/test_main/test_router/conftest.py b/tests/test_api/test_main/test_router/conftest.py index 5ec37b884..aac3f6482 100644 --- a/tests/test_api/test_main/test_router/conftest.py +++ b/tests/test_api/test_main/test_router/conftest.py @@ -7,13 +7,13 @@ import pytest_asyncio from sqlalchemy.ext.asyncio import AsyncSession -from ldap_protocol.auth.setup_gateway import SetupGateway -from ldap_protocol.ldap_schema.attribute_value_validator import ( +from application.auth.setup_gateway import SetupGateway +from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.ldap_schema.object_class_dao import ObjectClassDAO -from ldap_protocol.utils.queries import get_base_directories +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.ldap_schema.object_class_dao import ObjectClassDAO +from application.utils.queries import get_base_directories from password_utils import PasswordUtils from tests.constants import TEST_SYSTEM_ADMIN_DATA diff --git a/tests/test_api/test_main/test_router/test_add.py b/tests/test_api/test_main/test_router/test_add.py index f20d516d2..b4c63eea8 100644 --- a/tests/test_api/test_main/test_router/test_add.py +++ b/tests/test_api/test_main/test_router/test_add.py @@ -9,8 +9,8 @@ from httpx import AsyncClient from enums import SamAccountTypeCodes -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.objects import UserAccountControlFlag +from application.ldap_codes import LDAPCodes +from application.objects import UserAccountControlFlag from tests.api_datasets import test_api_forbidden_chars_in_attr_value diff --git a/tests/test_api/test_main/test_router/test_delete.py b/tests/test_api/test_main/test_router/test_delete.py index 0aa777cec..f65f7897b 100644 --- a/tests/test_api/test_main/test_router/test_delete.py +++ b/tests/test_api/test_main/test_router/test_delete.py @@ -7,7 +7,7 @@ import pytest from httpx import AsyncClient -from ldap_protocol.ldap_codes import LDAPCodes +from application.ldap_codes import LDAPCodes @pytest.mark.asyncio diff --git a/tests/test_api/test_main/test_router/test_login.py b/tests/test_api/test_main/test_router/test_login.py index e83f1cb64..0371b86c6 100644 --- a/tests/test_api/test_main/test_router/test_login.py +++ b/tests/test_api/test_main/test_router/test_login.py @@ -8,7 +8,7 @@ import pytest from fastapi import status -from ldap_protocol.ldap_requests.modify import Operation +from application.ldap_requests.modify import Operation from tests.conftest import TestCreds diff --git a/tests/test_api/test_main/test_router/test_modify.py b/tests/test_api/test_main/test_router/test_modify.py index 2d0dbd5af..824e50ec2 100644 --- a/tests/test_api/test_main/test_router/test_modify.py +++ b/tests/test_api/test_main/test_router/test_modify.py @@ -8,9 +8,9 @@ from httpx import AsyncClient from sqlalchemy.ext.asyncio import AsyncSession -from ldap_protocol.kerberos.base import AbstractKadmin -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.ldap_requests.modify import Operation +from application.kerberos.base import AbstractKadmin +from application.ldap_codes import LDAPCodes +from application.ldap_requests.modify import Operation @pytest.mark.asyncio diff --git a/tests/test_api/test_main/test_router/test_modify_dn.py b/tests/test_api/test_main/test_router/test_modify_dn.py index 8313049f5..3e723f4e1 100644 --- a/tests/test_api/test_main/test_router/test_modify_dn.py +++ b/tests/test_api/test_main/test_router/test_modify_dn.py @@ -7,7 +7,7 @@ import pytest from httpx import AsyncClient -from ldap_protocol.ldap_codes import LDAPCodes +from application.ldap_codes import LDAPCodes @pytest.mark.asyncio diff --git a/tests/test_api/test_main/test_router/test_rename.py b/tests/test_api/test_main/test_router/test_rename.py index e86804f39..860fcf8c3 100644 --- a/tests/test_api/test_main/test_router/test_rename.py +++ b/tests/test_api/test_main/test_router/test_rename.py @@ -7,8 +7,8 @@ import pytest from httpx import AsyncClient -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.ldap_requests.modify import Operation +from application.ldap_codes import LDAPCodes +from application.ldap_requests.modify import Operation @pytest.mark.asyncio diff --git a/tests/test_api/test_main/test_router/test_search.py b/tests/test_api/test_main/test_router/test_search.py index 77baea3f1..6f771dadf 100644 --- a/tests/test_api/test_main/test_router/test_search.py +++ b/tests/test_api/test_main/test_router/test_search.py @@ -8,8 +8,8 @@ from httpx import AsyncClient from enums import EntityTypeNames -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.ldap_requests.modify import Operation +from application.ldap_codes import LDAPCodes +from application.ldap_requests.modify import Operation from tests.search_request_datasets import ( test_search_by_rule_anr_dataset, test_search_by_rule_bit_and_dataset, diff --git a/tests/test_api/test_password_policy/conftest.py b/tests/test_api/test_password_policy/conftest.py index 157a94725..3331666b6 100644 --- a/tests/test_api/test_password_policy/conftest.py +++ b/tests/test_api/test_password_policy/conftest.py @@ -21,9 +21,9 @@ UserPasswordHistoryResetFastAPIAdapter, ) from config import Settings -from ldap_protocol.policies.password import PasswordPolicyUseCases -from ldap_protocol.policies.password.dataclasses import PasswordPolicyDTO -from ldap_protocol.policies.password.use_cases import ( +from application.policies.password import PasswordPolicyUseCases +from application.policies.password.dataclasses import PasswordPolicyDTO +from application.policies.password.use_cases import ( UserPasswordHistoryUseCases, ) from tests.conftest import TestProvider diff --git a/tests/test_api/test_shadow/conftest.py b/tests/test_api/test_shadow/conftest.py index 661b3a307..9be61f2ef 100644 --- a/tests/test_api/test_shadow/conftest.py +++ b/tests/test_api/test_shadow/conftest.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from entities import CatalogueSetting -from ldap_protocol.ldap_codes import LDAPCodes +from application.ldap_codes import LDAPCodes class ProxyRequestModel(BaseModel): diff --git a/tests/test_api/test_web_permissions/conftest.py b/tests/test_api/test_web_permissions/conftest.py index 9b76dab0a..848bac18f 100644 --- a/tests/test_api/test_web_permissions/conftest.py +++ b/tests/test_api/test_web_permissions/conftest.py @@ -20,10 +20,10 @@ from abstract_service import AbstractService from authorization_provider_protocol import AuthorizationProviderProtocol from config import Settings -from ldap_protocol.auth.auth_manager import AuthManager -from ldap_protocol.dhcp.base import AbstractDHCPManager -from ldap_protocol.dhcp.stub import StubDHCPManager -from ldap_protocol.policies.audit.service import AuditService +from application.auth.auth_manager import AuthManager +from application.dhcp.base import AbstractDHCPManager +from application.dhcp.stub import StubDHCPManager +from application.policies.audit.service import AuditService from tests.conftest import TestProvider diff --git a/tests/test_api/test_web_permissions/test_permission_checker.py b/tests/test_api/test_web_permissions/test_permission_checker.py index dccc644da..84faa12cd 100644 --- a/tests/test_api/test_web_permissions/test_permission_checker.py +++ b/tests/test_api/test_web_permissions/test_permission_checker.py @@ -9,9 +9,9 @@ from abstract_service import AbstractService from authorization_provider_protocol import AuthorizationProviderProtocol from enums import AuthorizationRules -from ldap_protocol.dialogue import UserSchema -from ldap_protocol.permissions_checker import AuthorizationError -from ldap_protocol.utils.queries import get_user +from application.dialogue import UserSchema +from application.permissions_checker import AuthorizationError +from application.utils.queries import get_user from tests.conftest import TestCreds from tests.test_api.test_web_permissions.conftest import ( get_params, diff --git a/tests/test_ldap/policies/test_audit/conftest.py b/tests/test_ldap/policies/test_audit/conftest.py index 6f176fdd8..7c3c98b68 100644 --- a/tests/test_ldap/policies/test_audit/conftest.py +++ b/tests/test_ldap/policies/test_audit/conftest.py @@ -16,9 +16,9 @@ ) from config import Settings -from ldap_protocol.policies.audit.destination_dao import AuditDestinationDAO -from ldap_protocol.policies.audit.policies_dao import AuditPoliciesDAO -from ldap_protocol.policies.audit.service import AuditService +from application.policies.audit.destination_dao import AuditDestinationDAO +from application.policies.audit.policies_dao import AuditPoliciesDAO +from application.policies.audit.service import AuditService from tests.conftest import TestProvider diff --git a/tests/test_ldap/policies/test_audit/test_rfc5424_serializer.py b/tests/test_ldap/policies/test_audit/test_rfc5424_serializer.py index 34db31bd5..d4cfe1aad 100644 --- a/tests/test_ldap/policies/test_audit/test_rfc5424_serializer.py +++ b/tests/test_ldap/policies/test_audit/test_rfc5424_serializer.py @@ -9,7 +9,7 @@ import pytest -from ldap_protocol.policies.audit.events.service_senders.rfc5424_serializer import ( # noqa: E501 +from application.policies.audit.events.service_senders.rfc5424_serializer import ( # noqa: E501 RFC5424Serializer, ) diff --git a/tests/test_ldap/policies/test_audit/test_service.py b/tests/test_ldap/policies/test_audit/test_service.py index f1601dc91..b09610d04 100644 --- a/tests/test_ldap/policies/test_audit/test_service.py +++ b/tests/test_ldap/policies/test_audit/test_service.py @@ -8,15 +8,15 @@ import pytest_asyncio from enums import AuditDestinationProtocolType, AuditDestinationServiceType -from ldap_protocol.policies.audit.dataclasses import ( +from application.policies.audit.dataclasses import ( AuditDestinationDTO, AuditPolicyDTO, ) -from ldap_protocol.policies.audit.exception import ( +from application.policies.audit.exception import ( AuditAlreadyExistsError, AuditNotFoundError, ) -from ldap_protocol.policies.audit.service import AuditService +from application.policies.audit.service import AuditService @pytest.mark.asyncio diff --git a/tests/test_ldap/policies/test_network/test_pool_client_handler.py b/tests/test_ldap/policies/test_network/test_pool_client_handler.py index 0d2b4c800..8428d2f41 100644 --- a/tests/test_ldap/policies/test_network/test_pool_client_handler.py +++ b/tests/test_ldap/policies/test_network/test_pool_client_handler.py @@ -11,8 +11,8 @@ from entities import NetworkPolicy from enums import ProtocolType -from ldap_protocol.policies.network import NetworkPolicyValidatorUseCase -from ldap_protocol.utils.queries import get_group, get_user +from application.policies.network import NetworkPolicyValidatorUseCase +from application.utils.queries import get_group, get_user @pytest.mark.asyncio diff --git a/tests/test_ldap/policies/test_network/test_use_case.py b/tests/test_ldap/policies/test_network/test_use_case.py index d9714f881..14b12e024 100644 --- a/tests/test_ldap/policies/test_network/test_use_case.py +++ b/tests/test_ldap/policies/test_network/test_use_case.py @@ -9,8 +9,8 @@ import pytest from enums import MFAFlags -from ldap_protocol.policies.network import NetworkPolicyUseCase -from ldap_protocol.policies.network.dto import ( +from application.policies.network import NetworkPolicyUseCase +from application.policies.network.dto import ( NetworkPolicyDTO, NetworkPolicyUpdateDTO, ) diff --git a/tests/test_ldap/policies/test_password/conftest.py b/tests/test_ldap/policies/test_password/conftest.py index e1e7e8608..f7d19fc86 100644 --- a/tests/test_ldap/policies/test_password/conftest.py +++ b/tests/test_ldap/policies/test_password/conftest.py @@ -16,7 +16,7 @@ ) from config import Settings -from ldap_protocol.policies.password import PasswordPolicyUseCases +from application.policies.password import PasswordPolicyUseCases from tests.conftest import TestProvider diff --git a/tests/test_ldap/policies/test_password/datasets.py b/tests/test_ldap/policies/test_password/datasets.py index 5aad7bf27..b80b74581 100644 --- a/tests/test_ldap/policies/test_password/datasets.py +++ b/tests/test_ldap/policies/test_password/datasets.py @@ -4,7 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE. """ -from ldap_protocol.policies.password.dataclasses import PasswordPolicyDTO +from application.policies.password.dataclasses import PasswordPolicyDTO test_get_password_policy_by_dir_path_dn_extended_dataset = [ [ diff --git a/tests/test_ldap/policies/test_password/test_use_cases.py b/tests/test_ldap/policies/test_password/test_use_cases.py index 2b03dfd1d..695696730 100644 --- a/tests/test_ldap/policies/test_password/test_use_cases.py +++ b/tests/test_ldap/policies/test_password/test_use_cases.py @@ -8,11 +8,11 @@ import pytest -from ldap_protocol.policies.password.dataclasses import ( +from application.policies.password.dataclasses import ( DefaultDomainPasswordPolicyPreset, PasswordPolicyDTO, ) -from ldap_protocol.policies.password.use_cases import PasswordPolicyUseCases +from application.policies.password.use_cases import PasswordPolicyUseCases from .datasets import test_get_password_policy_by_dir_path_dn_extended_dataset diff --git a/tests/test_ldap/policies/test_password/test_validator.py b/tests/test_ldap/policies/test_password/test_validator.py index 59e2d5787..7b5f50006 100644 --- a/tests/test_ldap/policies/test_password/test_validator.py +++ b/tests/test_ldap/policies/test_password/test_validator.py @@ -8,11 +8,11 @@ import pytest -from ldap_protocol.policies.password import PasswordPolicyValidator -from ldap_protocol.policies.password.ban_word_repository import ( +from application.policies.password import PasswordPolicyValidator +from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, ) -from ldap_protocol.utils.helpers import dt_to_ft +from application.utils.helpers import dt_to_ft @pytest.mark.asyncio diff --git a/tests/test_ldap/test_access_manager/test_entity_level_access.py b/tests/test_ldap/test_access_manager/test_entity_level_access.py index f252daaf7..89deafaf2 100644 --- a/tests/test_ldap/test_access_manager/test_entity_level_access.py +++ b/tests/test_ldap/test_access_manager/test_entity_level_access.py @@ -7,7 +7,7 @@ import pytest from entities import AccessControlEntry -from ldap_protocol.roles.access_manager import AccessManager +from application.roles.access_manager import AccessManager from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_access_manager/test_modify_access.py b/tests/test_ldap/test_access_manager/test_modify_access.py index b4cac2172..8e9c23c49 100644 --- a/tests/test_ldap/test_access_manager/test_modify_access.py +++ b/tests/test_ldap/test_access_manager/test_modify_access.py @@ -8,9 +8,9 @@ from entities import AccessControlEntry from enums import AceType -from ldap_protocol.ldap_responses import PartialAttribute -from ldap_protocol.objects import Changes, Operation -from ldap_protocol.roles.access_manager import AccessManager +from application.ldap_responses import PartialAttribute +from application.objects import Changes, Operation +from application.roles.access_manager import AccessManager from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_access_manager/test_search_access.py b/tests/test_ldap/test_access_manager/test_search_access.py index c586e2fc4..680b25dc3 100644 --- a/tests/test_ldap/test_access_manager/test_search_access.py +++ b/tests/test_ldap/test_access_manager/test_search_access.py @@ -7,7 +7,7 @@ import pytest from entities import AccessControlEntry -from ldap_protocol.roles.access_manager import AccessManager +from application.roles.access_manager import AccessManager from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_attribute_value_validator.py b/tests/test_ldap/test_attribute_value_validator.py index 084ca0a72..b4db21529 100644 --- a/tests/test_ldap/test_attribute_value_validator.py +++ b/tests/test_ldap/test_attribute_value_validator.py @@ -7,7 +7,7 @@ import pytest from enums import EntityTypeNames -from ldap_protocol.ldap_schema.attribute_value_validator import ( +from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) diff --git a/tests/test_ldap/test_bind.py b/tests/test_ldap/test_bind.py index d43776644..6831dcdbb 100644 --- a/tests/test_ldap/test_bind.py +++ b/tests/test_ldap/test_bind.py @@ -14,9 +14,9 @@ from config import Settings from entities import Attribute, Directory, User -from ldap_protocol.dependency import resolve_deps -from ldap_protocol.dialogue import LDAPSession -from ldap_protocol.ldap_requests.bind import ( +from application.dependency import resolve_deps +from application.dialogue import LDAPSession +from application.ldap_requests.bind import ( BindRequest, BindResponse, LDAPCodes, @@ -24,14 +24,14 @@ SimpleAuthentication, UnbindRequest, ) -from ldap_protocol.ldap_requests.bind_methods.sasl_spnego import ( +from application.ldap_requests.bind_methods.sasl_spnego import ( SaslSPNEGOAuthentication, ) -from ldap_protocol.ldap_requests.contexts import ( +from application.ldap_requests.contexts import ( LDAPBindRequestContext, LDAPUnbindRequestContext, ) -from ldap_protocol.objects import UserAccountControlFlag +from application.objects import UserAccountControlFlag from password_utils import PasswordUtils from tests.conftest import MutePolicyBindRequest, TestCreds diff --git a/tests/test_ldap/test_container_restrictions/conftest.py b/tests/test_ldap/test_container_restrictions/conftest.py index 57fc5e9f0..62032557b 100644 --- a/tests/test_ldap/test_container_restrictions/conftest.py +++ b/tests/test_ldap/test_container_restrictions/conftest.py @@ -9,7 +9,7 @@ import pytest_asyncio from entities import AccessControlEntry -from ldap_protocol.dialogue import UserSchema +from application.dialogue import UserSchema @pytest_asyncio.fixture diff --git a/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py b/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py index 08eca190e..ab1cb1100 100644 --- a/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py +++ b/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py @@ -10,7 +10,7 @@ import pytest from config import Settings -from ldap_protocol.ldap_codes import LDAPCodes +from application.ldap_codes import LDAPCodes from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_ldap3_definition_parse.py b/tests/test_ldap/test_ldap3_definition_parse.py index 14ce27f7a..2e62ca6b6 100644 --- a/tests/test_ldap/test_ldap3_definition_parse.py +++ b/tests/test_ldap/test_ldap3_definition_parse.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from entities import AttributeType, ObjectClass -from ldap_protocol.utils.raw_definition_parser import ( +from application.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) diff --git a/tests/test_ldap/test_netlogon.py b/tests/test_ldap/test_netlogon.py index c12764df5..64780db28 100644 --- a/tests/test_ldap/test_netlogon.py +++ b/tests/test_ldap/test_netlogon.py @@ -13,7 +13,7 @@ import uuid from collections import defaultdict -from ldap_protocol.rootdse.netlogon import ( +from application.rootdse.netlogon import ( _NL_DEFAULT_SITE, _ZERO_UUID, _ZERO_VER, diff --git a/tests/test_ldap/test_passwd_change.py b/tests/test_ldap/test_passwd_change.py index f01a93e7a..075d27876 100644 --- a/tests/test_ldap/test_passwd_change.py +++ b/tests/test_ldap/test_passwd_change.py @@ -8,7 +8,7 @@ from aioldap3 import LDAPConnection from sqlalchemy.ext.asyncio import AsyncSession -from ldap_protocol.utils.queries import get_user +from application.utils.queries import get_user from password_utils import PasswordUtils from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_roles/conftest.py b/tests/test_ldap/test_roles/conftest.py index 2d5959e27..5211d0d6c 100644 --- a/tests/test_ldap/test_roles/conftest.py +++ b/tests/test_ldap/test_roles/conftest.py @@ -10,7 +10,7 @@ import pytest_asyncio from config import Settings -from ldap_protocol.roles.role_dao import RoleDAO, RoleDTO +from application.roles.role_dao import RoleDAO, RoleDTO from tests.conftest import TestCreds BASE_DN = "dc=md,dc=test" diff --git a/tests/test_ldap/test_roles/test_multiple_access.py b/tests/test_ldap/test_roles/test_multiple_access.py index 4691ba0fb..21acf3a4c 100644 --- a/tests/test_ldap/test_roles/test_multiple_access.py +++ b/tests/test_ldap/test_roles/test_multiple_access.py @@ -14,11 +14,11 @@ from config import Settings from entities import Directory from enums import AceType, EntityTypeNames, RoleScope -from ldap_protocol.ldap_schema.attribute_type_dao import AttributeTypeDAO -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.dataclasses import AccessControlEntryDTO, RoleDTO -from ldap_protocol.utils.queries import get_filter_from_path +from application.ldap_schema.attribute_type_dao import AttributeTypeDAO +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO +from application.utils.queries import get_filter_from_path from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_roles/test_search.py b/tests/test_ldap/test_roles/test_search.py index 0795be89b..2566c57c4 100644 --- a/tests/test_ldap/test_roles/test_search.py +++ b/tests/test_ldap/test_roles/test_search.py @@ -8,10 +8,10 @@ from config import Settings from enums import AceType, EntityTypeNames, RoleScope -from ldap_protocol.ldap_schema.attribute_type_dao import AttributeTypeDAO -from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.dataclasses import AccessControlEntryDTO, RoleDTO +from application.ldap_schema.attribute_type_dao import AttributeTypeDAO +from application.ldap_schema.entity_type_dao import EntityTypeDAO +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO from tests.conftest import TestCreds from .conftest import perform_ldap_search_and_validate diff --git a/tests/test_ldap/test_util/test_add.py b/tests/test_ldap/test_util/test_add.py index b0312bc98..3fd3b1ba6 100644 --- a/tests/test_ldap/test_util/test_add.py +++ b/tests/test_ldap/test_util/test_add.py @@ -16,14 +16,14 @@ from config import Settings from entities import Directory, Group, User from enums import AceType, RoleScope -from ldap_protocol.dialogue import LDAPSession -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.ldap_requests import AddRequest -from ldap_protocol.ldap_requests.contexts import LDAPAddRequestContext -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.dataclasses import AccessControlEntryDTO, RoleDTO -from ldap_protocol.roles.role_dao import RoleDAO -from ldap_protocol.utils.queries import get_filter_from_path +from application.dialogue import LDAPSession +from application.ldap_codes import LDAPCodes +from application.ldap_requests import AddRequest +from application.ldap_requests.contexts import LDAPAddRequestContext +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO +from application.roles.role_dao import RoleDAO +from application.utils.queries import get_filter_from_path from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_util/test_delete.py b/tests/test_ldap/test_util/test_delete.py index bff5011c2..364fe6c91 100644 --- a/tests/test_ldap/test_util/test_delete.py +++ b/tests/test_ldap/test_util/test_delete.py @@ -14,10 +14,10 @@ from config import Settings from entities import Directory from enums import AceType, RoleScope -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.dataclasses import AccessControlEntryDTO, RoleDTO -from ldap_protocol.roles.role_dao import RoleDAO +from application.ldap_codes import LDAPCodes +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO +from application.roles.role_dao import RoleDAO from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_util/test_modify.py b/tests/test_ldap/test_util/test_modify.py index eda4c1fe0..d9f68be6d 100644 --- a/tests/test_ldap/test_util/test_modify.py +++ b/tests/test_ldap/test_util/test_modify.py @@ -19,13 +19,13 @@ from config import Settings from entities import Directory, Group from enums import AceType, RoleScope -from ldap_protocol.kerberos.base import AbstractKadmin -from ldap_protocol.ldap_codes import LDAPCodes -from ldap_protocol.objects import Operation -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.dataclasses import AccessControlEntryDTO, RoleDTO -from ldap_protocol.roles.role_dao import RoleDAO -from ldap_protocol.utils.queries import get_filter_from_path +from application.kerberos.base import AbstractKadmin +from application.ldap_codes import LDAPCodes +from application.objects import Operation +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO +from application.roles.role_dao import RoleDAO +from application.utils.queries import get_filter_from_path from repo.pg.tables import Attribute, directory_table, queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_util/test_search.py b/tests/test_ldap/test_util/test_search.py index 338822a62..73d269666 100644 --- a/tests/test_ldap/test_util/test_search.py +++ b/tests/test_ldap/test_util/test_search.py @@ -15,16 +15,16 @@ from config import Settings from entities import User from enums import AceType, ProtocolType, RoleScope -from ldap_protocol.asn1parser import ASN1Row, TagNumbers -from ldap_protocol.dialogue import LDAPSession -from ldap_protocol.ldap_requests import SearchRequest -from ldap_protocol.ldap_requests.contexts import LDAPSearchRequestContext -from ldap_protocol.ldap_responses import SearchResultEntry -from ldap_protocol.policies.network import NetworkPolicyValidatorUseCase -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.dataclasses import AccessControlEntryDTO, RoleDTO -from ldap_protocol.roles.role_dao import RoleDAO -from ldap_protocol.utils.queries import get_group, get_groups +from application.asn1parser import ASN1Row, TagNumbers +from application.dialogue import LDAPSession +from application.ldap_requests import SearchRequest +from application.ldap_requests.contexts import LDAPSearchRequestContext +from application.ldap_responses import SearchResultEntry +from application.policies.network import NetworkPolicyValidatorUseCase +from application.roles.ace_dao import AccessControlEntryDAO +from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO +from application.roles.role_dao import RoleDAO +from application.utils.queries import get_group, get_groups from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds from tests.search_request_datasets import ( diff --git a/tests/test_shedule.py b/tests/test_shedule.py index dc5aaaf01..30e90fda5 100644 --- a/tests/test_shedule.py +++ b/tests/test_shedule.py @@ -12,7 +12,7 @@ from extra.scripts.principal_block_user_sync import principal_block_sync from extra.scripts.uac_sync import disable_accounts from extra.scripts.update_krb5_config import update_krb5_config -from ldap_protocol.kerberos import AbstractKadmin +from application.kerberos import AbstractKadmin @pytest.mark.asyncio From 0056a72cbcddcf06c79e90902726e0b967f951f9 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:40:08 +0300 Subject: [PATCH 05/27] refactor: import paths to use application.entities module --- src/alembic/versions/01f3f05a5b11_add_primary_group_id.py | 2 +- src/alembic/versions/05ddc0bd562a_add_roles.py | 2 +- src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py | 2 +- src/alembic/versions/275222846605_initial_ldap_schema.py | 2 +- src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py | 2 +- src/alembic/versions/4442d1d982a4_remove_krb_policy.py | 2 +- src/alembic/versions/4798b12b97aa_dedicated_servers.py | 2 +- src/alembic/versions/4e8772277cfe_add_web_permissions.py | 2 +- .../6303f5c706ec_update_krbadmin_useraccountcontrol_.py | 2 +- src/alembic/versions/6c858cc05da7_add_default_admin_name.py | 2 +- src/alembic/versions/6f8fe2548893_fix_read_only.py | 2 +- src/alembic/versions/71e642808369_add_directory_is_system.py | 2 +- src/alembic/versions/8164b4a9e1f1_add_ou_computers.py | 2 +- .../versions/a1b2c3d4e5f6_rename_services_to_system.py | 2 +- .../versions/a99f866a7e3a_add_user_pwd_reset_permission.py | 2 +- .../versions/ad52bc16b87d_extend_password_policy_for_api.py | 2 +- src/alembic/versions/ba78cef9700a_initial_entity_type.py | 2 +- src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py | 2 +- src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py | 2 +- .../versions/c4888c68e221_fix_admin_attr_and_policy.py | 2 +- .../versions/c5a9b3f2e8d7_add_contact_object_class.py | 2 +- src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py | 2 +- .../versions/df4c52a613e5_migrate_password_prop_from_E.py | 2 +- .../versions/f1abf7ef2443_add_container_object_class.py | 2 +- src/alembic/versions/f24ed0e49df2_add_filter_anr.py | 2 +- src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py | 2 +- src/alembic/versions/fafc3d0b11ec_.py | 2 +- src/api/main/schema.py | 2 +- src/api/network/utils.py | 2 +- src/application/auth/auth_manager.py | 2 +- src/application/auth/mfa_manager.py | 2 +- src/application/auth/setup_gateway.py | 2 +- src/application/auth/utils.py | 2 +- src/application/dhcp/dhcp_manager_repository.py | 2 +- src/application/dialogue.py | 2 +- src/application/dns/dns_gateway.py | 2 +- src/{ => application}/entities.py | 0 src/application/filter_interpreter.py | 2 +- src/application/identity/provider.py | 2 +- src/application/identity/provider_gateway.py | 2 +- src/application/identity/utils.py | 2 +- src/application/kerberos/ldap_structure.py | 2 +- src/application/kerberos/utils.py | 2 +- src/application/ldap_requests/add.py | 2 +- src/application/ldap_requests/base.py | 2 +- src/application/ldap_requests/bind.py | 2 +- src/application/ldap_requests/bind_methods/base.py | 2 +- src/application/ldap_requests/bind_methods/sasl_gssapi.py | 2 +- src/application/ldap_requests/bind_methods/sasl_plain.py | 2 +- src/application/ldap_requests/bind_methods/simple.py | 2 +- src/application/ldap_requests/delete.py | 2 +- src/application/ldap_requests/extended.py | 2 +- src/application/ldap_requests/modify.py | 2 +- src/application/ldap_requests/modify_dn.py | 2 +- src/application/ldap_requests/search.py | 2 +- src/application/ldap_schema/attribute_type_dao.py | 2 +- src/application/ldap_schema/attribute_value_validator.py | 2 +- src/application/ldap_schema/entity_type_dao.py | 2 +- src/application/ldap_schema/object_class_dao.py | 2 +- src/application/multifactor.py | 2 +- src/application/policies/audit/audit_use_case.py | 2 +- src/application/policies/audit/destination_dao.py | 2 +- src/application/policies/audit/events/handler.py | 2 +- src/application/policies/audit/events/normalizer.py | 2 +- src/application/policies/audit/monitor.py | 2 +- src/application/policies/audit/policies_dao.py | 2 +- src/application/policies/network/gateway.py | 2 +- src/application/policies/network/use_cases.py | 2 +- src/application/policies/network/validator_gateway.py | 2 +- src/application/policies/network/validator_protocol.py | 2 +- src/application/policies/password/ban_word_repository.py | 2 +- src/application/policies/password/dao.py | 2 +- src/application/policies/password/use_cases.py | 2 +- src/application/roles/access_manager.py | 2 +- src/application/roles/ace_dao.py | 2 +- src/application/roles/role_dao.py | 2 +- src/application/roles/role_use_case.py | 2 +- src/application/rootdse/gateway.py | 2 +- src/application/rootdse/gw_protocol.py | 2 +- src/application/session_storage/repository.py | 2 +- src/application/user_account_control.py | 2 +- src/application/utils/async_cache.py | 2 +- src/application/utils/cte.py | 2 +- src/application/utils/helpers.py | 2 +- src/application/utils/queries.py | 2 +- src/application/utils/raw_definition_parser.py | 2 +- src/domain/__init__.py | 5 +++++ src/extra/scripts/principal_block_user_sync.py | 2 +- src/extra/scripts/uac_sync.py | 2 +- src/infrastructure/pg/tables.py | 2 +- tests/conftest.py | 2 +- tests/test_api/test_auth/test_router.py | 2 +- tests/test_api/test_auth/test_router_mfa.py | 2 +- tests/test_api/test_main/conftest.py | 2 +- tests/test_api/test_network/test_router.py | 2 +- tests/test_api/test_shadow/conftest.py | 2 +- tests/test_api/test_shadow/test_router.py | 2 +- .../policies/test_network/test_pool_client_handler.py | 2 +- tests/test_ldap/test_access_manager/conftest.py | 2 +- .../test_access_manager/test_entity_level_access.py | 2 +- tests/test_ldap/test_access_manager/test_modify_access.py | 2 +- tests/test_ldap/test_access_manager/test_search_access.py | 2 +- tests/test_ldap/test_bind.py | 2 +- tests/test_ldap/test_container_restrictions/conftest.py | 2 +- tests/test_ldap/test_ldap3_definition_parse.py | 2 +- tests/test_ldap/test_roles/test_multiple_access.py | 2 +- tests/test_ldap/test_util/test_add.py | 2 +- tests/test_ldap/test_util/test_delete.py | 2 +- tests/test_ldap/test_util/test_modify.py | 2 +- tests/test_ldap/test_util/test_search.py | 2 +- 110 files changed, 113 insertions(+), 108 deletions(-) rename src/{ => application}/entities.py (100%) create mode 100644 src/domain/__init__.py diff --git a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py index 80ad04d91..4ad08ba62 100644 --- a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py +++ b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py @@ -15,7 +15,7 @@ from sqlalchemy.orm import Session, selectinload from constants import DOMAIN_COMPUTERS_GROUP_NAME -from entities import Attribute, Directory, EntityType, Group +from application.entities import Attribute, Directory, EntityType, Group from enums import EntityTypeNames from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_value_validator import ( diff --git a/src/alembic/versions/05ddc0bd562a_add_roles.py b/src/alembic/versions/05ddc0bd562a_add_roles.py index e1c9d0578..3516e62f4 100644 --- a/src/alembic/versions/05ddc0bd562a_add_roles.py +++ b/src/alembic/versions/05ddc0bd562a_add_roles.py @@ -11,7 +11,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Directory, Group +from application.entities import Directory, Group from extra.alembic_utils import temporary_stub_column from application.roles.role_use_case import RoleUseCase from application.utils.queries import get_base_directories diff --git a/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py b/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py index 74c2ac0cc..89ed162e6 100644 --- a/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py +++ b/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py @@ -14,7 +14,7 @@ from sqlalchemy.orm import Session, selectinload from constants import READ_ONLY_GROUP_NAME -from entities import Attribute, Directory +from application.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/275222846605_initial_ldap_schema.py b/src/alembic/versions/275222846605_initial_ldap_schema.py index 473dc7ca8..43a5ffeea 100644 --- a/src/alembic/versions/275222846605_initial_ldap_schema.py +++ b/src/alembic/versions/275222846605_initial_ldap_schema.py @@ -16,7 +16,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session, selectinload -from entities import Attribute, AttributeType, ObjectClass +from application.entities import Attribute, AttributeType, ObjectClass from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.dto import AttributeTypeDTO diff --git a/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py b/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py index f4007a107..489258ff5 100644 --- a/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py +++ b/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py @@ -13,7 +13,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Attribute, Directory +from application.entities import Attribute, Directory from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/4442d1d982a4_remove_krb_policy.py b/src/alembic/versions/4442d1d982a4_remove_krb_policy.py index 5673da6a8..83b4a9451 100644 --- a/src/alembic/versions/4442d1d982a4_remove_krb_policy.py +++ b/src/alembic/versions/4442d1d982a4_remove_krb_policy.py @@ -12,7 +12,7 @@ from sqlalchemy import delete from sqlalchemy.orm import Session -from entities import Attribute, Directory +from application.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/4798b12b97aa_dedicated_servers.py b/src/alembic/versions/4798b12b97aa_dedicated_servers.py index e35f130f1..1cf8e4328 100644 --- a/src/alembic/versions/4798b12b97aa_dedicated_servers.py +++ b/src/alembic/versions/4798b12b97aa_dedicated_servers.py @@ -12,7 +12,7 @@ from loguru import logger from sqlalchemy.orm import Session -from entities import CatalogueSetting, DedicatedServer +from application.entities import CatalogueSetting, DedicatedServer from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/4e8772277cfe_add_web_permissions.py b/src/alembic/versions/4e8772277cfe_add_web_permissions.py index 8e29afbaf..2255723e7 100644 --- a/src/alembic/versions/4e8772277cfe_add_web_permissions.py +++ b/src/alembic/versions/4e8772277cfe_add_web_permissions.py @@ -11,7 +11,7 @@ from sqlalchemy import Column, select, text from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Role +from application.entities import Role from enums import AuthorizationRules, RoleConstants from infrastructure.pg.types import AuthorizationRulesType diff --git a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index 96f9af7fc..e97b61a20 100644 --- a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from entities import Attribute, Directory +from application.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from application.objects import UserAccountControlFlag from application.utils.helpers import create_integer_hash diff --git a/src/alembic/versions/6c858cc05da7_add_default_admin_name.py b/src/alembic/versions/6c858cc05da7_add_default_admin_name.py index 56b0677af..3a23942c7 100644 --- a/src/alembic/versions/6c858cc05da7_add_default_admin_name.py +++ b/src/alembic/versions/6c858cc05da7_add_default_admin_name.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from entities import Attribute, User +from application.entities import Attribute, User from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/6f8fe2548893_fix_read_only.py b/src/alembic/versions/6f8fe2548893_fix_read_only.py index 1514875e5..26e6818f9 100644 --- a/src/alembic/versions/6f8fe2548893_fix_read_only.py +++ b/src/alembic/versions/6f8fe2548893_fix_read_only.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import Session from constants import DOMAIN_USERS_GROUP_NAME -from entities import Attribute, Directory +from application.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from application.utils.helpers import create_integer_hash diff --git a/src/alembic/versions/71e642808369_add_directory_is_system.py b/src/alembic/versions/71e642808369_add_directory_is_system.py index 0a01237e1..88034d7e5 100644 --- a/src/alembic/versions/71e642808369_add_directory_is_system.py +++ b/src/alembic/versions/71e642808369_add_directory_is_system.py @@ -19,7 +19,7 @@ DOMAIN_USERS_GROUP_NAME, READ_ONLY_GROUP_NAME, ) -from entities import Directory +from application.entities import Directory from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py index 40ed73ab6..f25d98312 100644 --- a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py +++ b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py @@ -12,7 +12,7 @@ from sqlalchemy import delete, exists, select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Directory +from application.entities import Directory from extra.alembic_utils import temporary_stub_column from application.roles.role_use_case import RoleUseCase from application.utils.queries import get_base_directories diff --git a/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py b/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py index 0b6ca39ec..11393416d 100644 --- a/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py +++ b/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py @@ -11,7 +11,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Attribute, Directory +from application.entities import Attribute, Directory from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py b/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py index 47aece016..39a801070 100644 --- a/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py +++ b/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py @@ -11,7 +11,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Role +from application.entities import Role from enums import AuthorizationRules, RoleConstants # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py index eea4b34f9..568d4b58c 100644 --- a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py +++ b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py @@ -12,7 +12,7 @@ from sqlalchemy import update from sqlalchemy.orm import Session -from entities import PasswordPolicy +from application.entities import PasswordPolicy from application.policies.password.dataclasses import ( DefaultDomainPasswordPolicyPreset, ) diff --git a/src/alembic/versions/ba78cef9700a_initial_entity_type.py b/src/alembic/versions/ba78cef9700a_initial_entity_type.py index 845eb23f6..de00ea546 100644 --- a/src/alembic/versions/ba78cef9700a_initial_entity_type.py +++ b/src/alembic/versions/ba78cef9700a_initial_entity_type.py @@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from constants import ENTITY_TYPE_DATAS -from entities import Attribute, Directory, User +from application.entities import Attribute, Directory, User from extra.alembic_utils import temporary_stub_column from application.ldap_schema.dto import EntityTypeDTO from application.ldap_schema.entity_type_dao import EntityTypeDAO diff --git a/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py b/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py index b26844572..c82b0b850 100644 --- a/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py +++ b/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from entities import Attribute, Directory +from application.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py b/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py index a920c7ea0..ebd6e9a4f 100644 --- a/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py +++ b/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from entities import Attribute, Directory +from application.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index b9edb17a3..5291d50b4 100644 --- a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from entities import Attribute, Directory, NetworkPolicy +from application.entities import Attribute, Directory, NetworkPolicy from extra.alembic_utils import temporary_stub_column from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.utils.helpers import create_integer_hash diff --git a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py index 553319416..8d91b09dc 100644 --- a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py +++ b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py @@ -11,7 +11,7 @@ from sqlalchemy import delete from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import EntityType +from application.entities import EntityType from enums import EntityTypeNames from application.ldap_schema.dto import EntityTypeDTO from application.ldap_schema.entity_type_use_case import EntityTypeUseCase diff --git a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py index bd46bb439..e148cb179 100644 --- a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py +++ b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from entities import Attribute, CatalogueSetting, User +from application.entities import Attribute, CatalogueSetting, User from extra.alembic_utils import temporary_stub_column from application.kerberos import KERBEROS_STATE_NAME from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py index 9241a9a8c..e164a1a71 100644 --- a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py +++ b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session -from entities import PasswordPolicy +from application.entities import PasswordPolicy from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, ) diff --git a/src/alembic/versions/f1abf7ef2443_add_container_object_class.py b/src/alembic/versions/f1abf7ef2443_add_container_object_class.py index a3a8d42e1..dec2b668f 100644 --- a/src/alembic/versions/f1abf7ef2443_add_container_object_class.py +++ b/src/alembic/versions/f1abf7ef2443_add_container_object_class.py @@ -12,7 +12,7 @@ from sqlalchemy import delete, func, insert, select, update from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Attribute, Directory, EntityType +from application.entities import Attribute, Directory, EntityType from enums import EntityTypeNames from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/f24ed0e49df2_add_filter_anr.py b/src/alembic/versions/f24ed0e49df2_add_filter_anr.py index e1bb4c8f7..7042719d9 100644 --- a/src/alembic/versions/f24ed0e49df2_add_filter_anr.py +++ b/src/alembic/versions/f24ed0e49df2_add_filter_anr.py @@ -12,7 +12,7 @@ from sqlalchemy.dialects import postgresql from sqlalchemy.orm import Session -from entities import AttributeType +from application.entities import AttributeType from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py b/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py index 311d89056..2420f8c21 100644 --- a/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py +++ b/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from entities import Attribute, Directory, EntityType +from application.entities import Attribute, Directory, EntityType from enums import EntityTypeNames, SamAccountTypeCodes from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/fafc3d0b11ec_.py b/src/alembic/versions/fafc3d0b11ec_.py index 9c8e0c7d9..b2d1294ed 100644 --- a/src/alembic/versions/fafc3d0b11ec_.py +++ b/src/alembic/versions/fafc3d0b11ec_.py @@ -13,7 +13,7 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from entities import Directory +from application.entities import Directory from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, diff --git a/src/api/main/schema.py b/src/api/main/schema.py index c02de78de..02c4e4af2 100644 --- a/src/api/main/schema.py +++ b/src/api/main/schema.py @@ -11,7 +11,7 @@ from pydantic import BaseModel, Field, PrivateAttr, SecretStr from sqlalchemy.sql.elements import ColumnElement, UnaryExpression -from entities import Directory +from application.entities import Directory from application.dns import DNSManagerState, DNSZoneParam, DNSZoneType from application.filter_interpreter import ( Filter, diff --git a/src/api/network/utils.py b/src/api/network/utils.py index a01db466d..386e1e944 100644 --- a/src/api/network/utils.py +++ b/src/api/network/utils.py @@ -8,7 +8,7 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession -from entities import NetworkPolicy +from application.entities import NetworkPolicy async def check_policy_count(session: AsyncSession) -> None: diff --git a/src/application/auth/auth_manager.py b/src/application/auth/auth_manager.py index c79e2a994..f7b166394 100644 --- a/src/application/auth/auth_manager.py +++ b/src/application/auth/auth_manager.py @@ -12,7 +12,7 @@ from abstract_service import AbstractService from config import Settings -from entities import User +from application.entities import User from enums import AuthorizationRules, MFAFlags from application.auth.dto import SetupDTO from application.auth.mfa_manager import MFAManager diff --git a/src/application/auth/mfa_manager.py b/src/application/auth/mfa_manager.py index 0694313c6..aba36f258 100644 --- a/src/application/auth/mfa_manager.py +++ b/src/application/auth/mfa_manager.py @@ -19,7 +19,7 @@ from abstract_service import AbstractService from config import Settings -from entities import CatalogueSetting, NetworkPolicy, User +from application.entities import CatalogueSetting, NetworkPolicy, User from enums import AuthorizationRules, MFAChallengeStatuses, MFAFlags from application.auth.exceptions.mfa import ( AuthenticationError, diff --git a/src/application/auth/setup_gateway.py b/src/application/auth/setup_gateway.py index 2e72cf383..7b78525cc 100644 --- a/src/application/auth/setup_gateway.py +++ b/src/application/auth/setup_gateway.py @@ -11,7 +11,7 @@ from sqlalchemy import exists, select from sqlalchemy.ext.asyncio import AsyncSession -from entities import Attribute, Directory, Group, NetworkPolicy, User +from application.entities import Attribute, Directory, Group, NetworkPolicy, User from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) diff --git a/src/application/auth/utils.py b/src/application/auth/utils.py index 6c88f1cf1..63613a11d 100644 --- a/src/application/auth/utils.py +++ b/src/application/auth/utils.py @@ -6,7 +6,7 @@ from sqlalchemy.ext.asyncio import AsyncSession -from entities import User +from application.entities import User from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/dhcp/dhcp_manager_repository.py b/src/application/dhcp/dhcp_manager_repository.py index 3be8efec8..f3e40cf64 100644 --- a/src/application/dhcp/dhcp_manager_repository.py +++ b/src/application/dhcp/dhcp_manager_repository.py @@ -7,7 +7,7 @@ from sqlalchemy import select, update from sqlalchemy.ext.asyncio import AsyncSession -from entities import CatalogueSetting +from application.entities import CatalogueSetting from infrastructure.pg.tables import queryable_attr as qa from .enums import DHCPManagerState diff --git a/src/application/dialogue.py b/src/application/dialogue.py index e5f7a5931..077ddbc8c 100644 --- a/src/application/dialogue.py +++ b/src/application/dialogue.py @@ -17,7 +17,7 @@ import gssapi -from entities import NetworkPolicy, User +from application.entities import NetworkPolicy, User from enums import ProtocolType from application.policies.network import NetworkPolicyValidatorUseCase diff --git a/src/application/dns/dns_gateway.py b/src/application/dns/dns_gateway.py index ae0b4931c..cf03d04e0 100644 --- a/src/application/dns/dns_gateway.py +++ b/src/application/dns/dns_gateway.py @@ -9,7 +9,7 @@ from sqlalchemy import case, select, update from sqlalchemy.ext.asyncio import AsyncSession -from entities import CatalogueSetting +from application.entities import CatalogueSetting from application.dns.base import ( DNS_MANAGER_IP_ADDRESS_NAME, DNS_MANAGER_STATE_NAME, diff --git a/src/entities.py b/src/application/entities.py similarity index 100% rename from src/entities.py rename to src/application/entities.py diff --git a/src/application/filter_interpreter.py b/src/application/filter_interpreter.py index 058b4d7b0..d184a7951 100644 --- a/src/application/filter_interpreter.py +++ b/src/application/filter_interpreter.py @@ -22,7 +22,7 @@ ) from sqlalchemy.sql.expression import false as sql_false -from entities import ( +from application.entities import ( Attribute, AttributeType, Directory, diff --git a/src/application/identity/provider.py b/src/application/identity/provider.py index 7bd18d149..393d97e5f 100644 --- a/src/application/identity/provider.py +++ b/src/application/identity/provider.py @@ -7,7 +7,7 @@ from loguru import logger from config import Settings -from entities import User +from application.entities import User from enums import AuthorizationRules from application.dialogue import UserSchema from application.identity.exceptions import UnauthorizedError diff --git a/src/application/identity/provider_gateway.py b/src/application/identity/provider_gateway.py index 6c24563d3..0b5cf89f9 100644 --- a/src/application/identity/provider_gateway.py +++ b/src/application/identity/provider_gateway.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload -from entities import Group, Role, User +from application.entities import Group, Role, User from enums import AuthorizationRules from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/identity/utils.py b/src/application/identity/utils.py index cb9454250..899e4537a 100644 --- a/src/application/identity/utils.py +++ b/src/application/identity/utils.py @@ -9,7 +9,7 @@ from fastapi import HTTPException, Request, status from sqlalchemy.ext.asyncio import AsyncSession -from entities import User +from application.entities import User from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/kerberos/ldap_structure.py b/src/application/kerberos/ldap_structure.py index 5e3ee1f87..cc30f60db 100644 --- a/src/application/kerberos/ldap_structure.py +++ b/src/application/kerberos/ldap_structure.py @@ -7,7 +7,7 @@ from sqlalchemy import delete, or_, select from sqlalchemy.ext.asyncio import AsyncSession -from entities import Directory +from application.entities import Directory from application.kerberos.exceptions import KerberosConflictError from application.ldap_requests import AddRequest from application.ldap_requests.contexts import LDAPAddRequestContext diff --git a/src/application/kerberos/utils.py b/src/application/kerberos/utils.py index ed22cda91..071d33b4b 100644 --- a/src/application/kerberos/utils.py +++ b/src/application/kerberos/utils.py @@ -8,7 +8,7 @@ from sqlalchemy import delete, select, update from sqlalchemy.ext.asyncio import AsyncSession -from entities import Attribute, CatalogueSetting, Directory, EntityType +from application.entities import Attribute, CatalogueSetting, Directory, EntityType from enums import EntityTypeNames, StrEnum from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/ldap_requests/add.py b/src/application/ldap_requests/add.py index ca5a92828..7db90e89a 100644 --- a/src/application/ldap_requests/add.py +++ b/src/application/ldap_requests/add.py @@ -12,7 +12,7 @@ from sqlalchemy.exc import IntegrityError from constants import DOMAIN_COMPUTERS_GROUP_NAME, DOMAIN_USERS_GROUP_NAME -from entities import Attribute, Directory, Group, User +from application.entities import Attribute, Directory, Group, User from enums import AceType, EntityTypeNames, SamAccountTypeCodes from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( diff --git a/src/application/ldap_requests/base.py b/src/application/ldap_requests/base.py index 7abf1edcd..101543f1d 100644 --- a/src/application/ldap_requests/base.py +++ b/src/application/ldap_requests/base.py @@ -21,7 +21,7 @@ from sqlalchemy.exc import OperationalError from config import Settings -from entities import Directory +from application.entities import Directory from application.dependency import resolve_deps from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes diff --git a/src/application/ldap_requests/bind.py b/src/application/ldap_requests/bind.py index 3e36222cb..6ffdd27b6 100644 --- a/src/application/ldap_requests/bind.py +++ b/src/application/ldap_requests/bind.py @@ -10,7 +10,7 @@ from pydantic import Field from sqlalchemy.exc import OperationalError -from entities import NetworkPolicy +from application.entities import NetworkPolicy from enums import MFAFlags from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( diff --git a/src/application/ldap_requests/bind_methods/base.py b/src/application/ldap_requests/bind_methods/base.py index 9427e031d..d23f6dcae 100644 --- a/src/application/ldap_requests/bind_methods/base.py +++ b/src/application/ldap_requests/bind_methods/base.py @@ -11,7 +11,7 @@ from pydantic import BaseModel, Field, SecretStr from sqlalchemy.ext.asyncio import AsyncSession -from entities import User +from application.entities import User from application.asn1parser import ASN1Row from application.ldap_codes import LDAPCodes from application.ldap_responses import BindResponse diff --git a/src/application/ldap_requests/bind_methods/sasl_gssapi.py b/src/application/ldap_requests/bind_methods/sasl_gssapi.py index 7f8569f75..c5df53e1e 100644 --- a/src/application/ldap_requests/bind_methods/sasl_gssapi.py +++ b/src/application/ldap_requests/bind_methods/sasl_gssapi.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from entities import User +from application.entities import User from application.asn1parser import ASN1Row from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes diff --git a/src/application/ldap_requests/bind_methods/sasl_plain.py b/src/application/ldap_requests/bind_methods/sasl_plain.py index 5776c1d8e..69e18c24c 100644 --- a/src/application/ldap_requests/bind_methods/sasl_plain.py +++ b/src/application/ldap_requests/bind_methods/sasl_plain.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession -from entities import User +from application.entities import User from application.asn1parser import ASN1Row from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/ldap_requests/bind_methods/simple.py b/src/application/ldap_requests/bind_methods/simple.py index ef06c7655..6fafd5d54 100644 --- a/src/application/ldap_requests/bind_methods/simple.py +++ b/src/application/ldap_requests/bind_methods/simple.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession -from entities import User +from application.entities import User from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/ldap_requests/delete.py b/src/application/ldap_requests/delete.py index a5f982ace..6c3a6062f 100644 --- a/src/application/ldap_requests/delete.py +++ b/src/application/ldap_requests/delete.py @@ -9,7 +9,7 @@ from sqlalchemy import delete, exists, select from sqlalchemy.orm import joinedload, selectinload -from entities import Directory, Group +from application.entities import Directory, Group from enums import AceType from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( diff --git a/src/application/ldap_requests/extended.py b/src/application/ldap_requests/extended.py index 8e388ab19..8f2b4381d 100644 --- a/src/application/ldap_requests/extended.py +++ b/src/application/ldap_requests/extended.py @@ -12,7 +12,7 @@ from pydantic import BaseModel, SecretStr, SerializeAsAny from sqlalchemy import update -from entities import Directory, User +from application.entities import Directory, User from application.asn1parser import LDAPOID, ASN1Row, asn1todict from application.kerberos.exceptions import ( KRBAPIChangePasswordError, diff --git a/src/application/ldap_requests/modify.py b/src/application/ldap_requests/modify.py index 31294560c..b50515684 100644 --- a/src/application/ldap_requests/modify.py +++ b/src/application/ldap_requests/modify.py @@ -16,7 +16,7 @@ from config import Settings from constants import DOMAIN_ADMIN_GROUP_NAME -from entities import Attribute, Directory, Group, User +from application.entities import Attribute, Directory, Group, User from enums import AceType, EntityTypeNames from application.asn1parser import ASN1Row from application.dialogue import UserSchema diff --git a/src/application/ldap_requests/modify_dn.py b/src/application/ldap_requests/modify_dn.py index 0d93c177d..f2cde4ba5 100644 --- a/src/application/ldap_requests/modify_dn.py +++ b/src/application/ldap_requests/modify_dn.py @@ -10,7 +10,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import joinedload, selectinload -from entities import AccessControlEntry, Attribute, Directory +from application.entities import AccessControlEntry, Attribute, Directory from enums import AceType from application.asn1parser import ASN1Row from application.ldap_codes import LDAPCodes diff --git a/src/application/ldap_requests/search.py b/src/application/ldap_requests/search.py index f759aad19..ff93be280 100644 --- a/src/application/ldap_requests/search.py +++ b/src/application/ldap_requests/search.py @@ -23,7 +23,7 @@ from sqlalchemy.sql.elements import ColumnElement, UnaryExpression from sqlalchemy.sql.expression import Select -from entities import ( +from application.entities import ( Attribute, AttributeType, Directory, diff --git a/src/application/ldap_schema/attribute_type_dao.py b/src/application/ldap_schema/attribute_type_dao.py index 4558503d1..a68a0b19f 100644 --- a/src/application/ldap_schema/attribute_type_dao.py +++ b/src/application/ldap_schema/attribute_type_dao.py @@ -15,7 +15,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_dao import AbstractDAO -from entities import AttributeType +from application.entities import AttributeType from application.ldap_schema.dto import AttributeTypeDTO from application.ldap_schema.exceptions import ( AttributeTypeAlreadyExistsError, diff --git a/src/application/ldap_schema/attribute_value_validator.py b/src/application/ldap_schema/attribute_value_validator.py index 951cdb227..f00f19c43 100644 --- a/src/application/ldap_schema/attribute_value_validator.py +++ b/src/application/ldap_schema/attribute_value_validator.py @@ -8,7 +8,7 @@ from collections import defaultdict from typing import Callable, cast as tcast -from entities import Attribute, Directory, User +from application.entities import Attribute, Directory, User from enums import EntityTypeNames from application.objects import PartialAttribute diff --git a/src/application/ldap_schema/entity_type_dao.py b/src/application/ldap_schema/entity_type_dao.py index acaa5d7cd..4f318e30d 100644 --- a/src/application/ldap_schema/entity_type_dao.py +++ b/src/application/ldap_schema/entity_type_dao.py @@ -15,7 +15,7 @@ from sqlalchemy.orm import selectinload from abstract_dao import AbstractDAO -from entities import Attribute, Directory, EntityType, ObjectClass +from application.entities import Attribute, Directory, EntityType, ObjectClass from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, AttributeValueValidatorError, diff --git a/src/application/ldap_schema/object_class_dao.py b/src/application/ldap_schema/object_class_dao.py index ddc033387..c918c7521 100644 --- a/src/application/ldap_schema/object_class_dao.py +++ b/src/application/ldap_schema/object_class_dao.py @@ -18,7 +18,7 @@ from sqlalchemy.orm import selectinload from abstract_dao import AbstractDAO -from entities import AttributeType, EntityType, ObjectClass +from application.entities import AttributeType, EntityType, ObjectClass from application.utils.pagination import ( PaginationParams, PaginationResult, diff --git a/src/application/multifactor.py b/src/application/multifactor.py index 3e0edd888..e2e85b477 100644 --- a/src/application/multifactor.py +++ b/src/application/multifactor.py @@ -15,7 +15,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from entities import CatalogueSetting +from application.entities import CatalogueSetting from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/policies/audit/audit_use_case.py b/src/application/policies/audit/audit_use_case.py index a6c502a13..28852725e 100644 --- a/src/application/policies/audit/audit_use_case.py +++ b/src/application/policies/audit/audit_use_case.py @@ -4,7 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from entities import AuditSeverity +from application.entities import AuditSeverity from application.asn1parser import LDAPOID from application.objects import OperationEvent, UserAccountControlFlag diff --git a/src/application/policies/audit/destination_dao.py b/src/application/policies/audit/destination_dao.py index 4ce4683df..f8216a713 100644 --- a/src/application/policies/audit/destination_dao.py +++ b/src/application/policies/audit/destination_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_dao import AbstractDAO -from entities import AuditDestination +from application.entities import AuditDestination from .dataclasses import AuditDestinationDTO from .exception import AuditNotFoundError diff --git a/src/application/policies/audit/events/handler.py b/src/application/policies/audit/events/handler.py index 33e24a380..c286bdb1d 100644 --- a/src/application/policies/audit/events/handler.py +++ b/src/application/policies/audit/events/handler.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from entities import AuditPolicy, AuditPolicyTrigger +from application.entities import AuditPolicy, AuditPolicyTrigger from application.ldap_codes import LDAPCodes from application.objects import OperationEvent from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/policies/audit/events/normalizer.py b/src/application/policies/audit/events/normalizer.py index f6c60227e..09a273ea3 100644 --- a/src/application/policies/audit/events/normalizer.py +++ b/src/application/policies/audit/events/normalizer.py @@ -4,7 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from entities import AuditPolicyTrigger +from application.entities import AuditPolicyTrigger from application.objects import OperationEvent from .dataclasses import NormalizedAuditEvent, RawAuditEvent diff --git a/src/application/policies/audit/monitor.py b/src/application/policies/audit/monitor.py index a772f5898..16319e0fd 100644 --- a/src/application/policies/audit/monitor.py +++ b/src/application/policies/audit/monitor.py @@ -13,7 +13,7 @@ from starlette.datastructures import URL from config import Settings -from entities import User +from application.entities import User from application.auth.exceptions.mfa import ( AuthenticationError, ForbiddenError, diff --git a/src/application/policies/audit/policies_dao.py b/src/application/policies/audit/policies_dao.py index 65d2bf5ca..b99bf3a98 100644 --- a/src/application/policies/audit/policies_dao.py +++ b/src/application/policies/audit/policies_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_dao import AbstractDAO -from entities import AuditPolicy, AuditPolicyTrigger +from application.entities import AuditPolicy, AuditPolicyTrigger from .dataclasses import AuditPolicyDTO, AuditPolicySetupDTO from .exception import AuditNotFoundError diff --git a/src/application/policies/network/gateway.py b/src/application/policies/network/gateway.py index 120b86bf5..dc808e2ec 100644 --- a/src/application/policies/network/gateway.py +++ b/src/application/policies/network/gateway.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from entities import Group, NetworkPolicy +from application.entities import Group, NetworkPolicy from application.policies.network.exceptions import ( NetworkPolicyAlreadyExistsError, NetworkPolicyNotFoundError, diff --git a/src/application/policies/network/use_cases.py b/src/application/policies/network/use_cases.py index ea0b2d51f..419778991 100644 --- a/src/application/policies/network/use_cases.py +++ b/src/application/policies/network/use_cases.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from entities import NetworkPolicy, User +from application.entities import NetworkPolicy, User from enums import AuthorizationRules, ProtocolType from application.policies.network.dto import ( NetworkPolicyDTO, diff --git a/src/application/policies/network/validator_gateway.py b/src/application/policies/network/validator_gateway.py index c4ad2f67b..e4c8317a2 100644 --- a/src/application/policies/network/validator_gateway.py +++ b/src/application/policies/network/validator_gateway.py @@ -11,7 +11,7 @@ from sqlalchemy.orm import selectinload from sqlalchemy.sql.expression import Select, true -from entities import Group, NetworkPolicy, User +from application.entities import Group, NetworkPolicy, User from enums import ProtocolType from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/policies/network/validator_protocol.py b/src/application/policies/network/validator_protocol.py index 5ead88a2f..5bc513731 100644 --- a/src/application/policies/network/validator_protocol.py +++ b/src/application/policies/network/validator_protocol.py @@ -7,7 +7,7 @@ from ipaddress import IPv4Address, IPv6Address from typing import Protocol -from entities import NetworkPolicy, User +from application.entities import NetworkPolicy, User from enums import ProtocolType diff --git a/src/application/policies/password/ban_word_repository.py b/src/application/policies/password/ban_word_repository.py index a752b3ddc..3d12a9b44 100644 --- a/src/application/policies/password/ban_word_repository.py +++ b/src/application/policies/password/ban_word_repository.py @@ -10,7 +10,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession -from entities import PasswordBanWord +from application.entities import PasswordBanWord from application.policies.password.exceptions import ( PasswordBanWordFileHasDuplicatesError, ) diff --git a/src/application/policies/password/dao.py b/src/application/policies/password/dao.py index ae0aa424b..40047a1ff 100644 --- a/src/application/policies/password/dao.py +++ b/src/application/policies/password/dao.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import attributes, selectinload from abstract_dao import AbstractDAO -from entities import Attribute, Group, PasswordPolicy, User +from application.entities import Attribute, Group, PasswordPolicy, User from enums import EntityTypeNames from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, diff --git a/src/application/policies/password/use_cases.py b/src/application/policies/password/use_cases.py index f4f2d8261..1daea6621 100644 --- a/src/application/policies/password/use_cases.py +++ b/src/application/policies/password/use_cases.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from entities import User +from application.entities import User from enums import AuthorizationRules from application.identity.exceptions import UserNotFoundError from application.policies.password.ban_word_repository import ( diff --git a/src/application/roles/access_manager.py b/src/application/roles/access_manager.py index 6fee2d8af..37457b683 100644 --- a/src/application/roles/access_manager.py +++ b/src/application/roles/access_manager.py @@ -9,7 +9,7 @@ from sqlalchemy import Select, and_ from sqlalchemy.orm import selectinload, with_loader_criteria -from entities import AccessControlEntry, Directory +from application.entities import AccessControlEntry, Directory from enums import AceType, RoleScope from application.objects import Changes, Operation from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/roles/ace_dao.py b/src/application/roles/ace_dao.py index a0f45c152..d5c8d5df2 100644 --- a/src/application/roles/ace_dao.py +++ b/src/application/roles/ace_dao.py @@ -12,7 +12,7 @@ from sqlalchemy.orm import joinedload, selectinload from abstract_dao import AbstractDAO -from entities import AccessControlEntry, Directory +from application.entities import AccessControlEntry, Directory from enums import AceType, RoleScope from application.utils.helpers import get_depth_by_dn from application.utils.queries import get_path_filter, get_search_path diff --git a/src/application/roles/role_dao.py b/src/application/roles/role_dao.py index edeeb4f04..3a52bf7bf 100644 --- a/src/application/roles/role_dao.py +++ b/src/application/roles/role_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.orm import joinedload, selectinload from abstract_dao import AbstractDAO -from entities import AccessControlEntry, Group, Role +from application.entities import AccessControlEntry, Group, Role from enums import AuthorizationRules, RoleConstants from application.utils.queries import get_groups from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/roles/role_use_case.py b/src/application/roles/role_use_case.py index a17a5e8cb..8c83a7064 100644 --- a/src/application/roles/role_use_case.py +++ b/src/application/roles/role_use_case.py @@ -6,7 +6,7 @@ from sqlalchemy import and_, insert, literal, or_, select -from entities import AccessControlEntry, AceType, Directory, Role +from application.entities import AccessControlEntry, AceType, Directory, Role from enums import AuthorizationRules, RoleConstants, RoleScope from application.kerberos.utils import get_system_container_dn from application.utils.queries import get_base_directories diff --git a/src/application/rootdse/gateway.py b/src/application/rootdse/gateway.py index f6d4c79b8..51b380594 100644 --- a/src/application/rootdse/gateway.py +++ b/src/application/rootdse/gateway.py @@ -7,7 +7,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from entities import Directory +from application.entities import Directory class SADomainGateway: diff --git a/src/application/rootdse/gw_protocol.py b/src/application/rootdse/gw_protocol.py index f8b23624c..f5f6967f4 100644 --- a/src/application/rootdse/gw_protocol.py +++ b/src/application/rootdse/gw_protocol.py @@ -6,7 +6,7 @@ from typing import Protocol -from entities import Directory +from application.entities import Directory class DomainReadProtocol(Protocol): diff --git a/src/application/session_storage/repository.py b/src/application/session_storage/repository.py index 752ba1b2a..1334e8d71 100644 --- a/src/application/session_storage/repository.py +++ b/src/application/session_storage/repository.py @@ -10,7 +10,7 @@ from abstract_service import AbstractService from config import Settings -from entities import User +from application.entities import User from enums import AuthorizationRules from application.utils.queries import get_user, set_user_logon_attrs diff --git a/src/application/user_account_control.py b/src/application/user_account_control.py index 7db30f8c3..158e549d4 100644 --- a/src/application/user_account_control.py +++ b/src/application/user_account_control.py @@ -9,7 +9,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from entities import Attribute +from application.entities import Attribute from application.objects import ( UserAccountControlFlag as UserAccountControlFlag, ) diff --git a/src/application/utils/async_cache.py b/src/application/utils/async_cache.py index f66f45cf3..d6cf80249 100644 --- a/src/application/utils/async_cache.py +++ b/src/application/utils/async_cache.py @@ -4,7 +4,7 @@ from functools import wraps from typing import Callable, Generic, TypeVar -from entities import Directory +from application.entities import Directory T = TypeVar("T") DEFAULT_CACHE_TIME = 5 * 60 # 5 minutes diff --git a/src/application/utils/cte.py b/src/application/utils/cte.py index 93efb0126..00595553f 100644 --- a/src/application/utils/cte.py +++ b/src/application/utils/cte.py @@ -9,7 +9,7 @@ from sqlalchemy.sql.expression import select from sqlalchemy.sql.selectable import CTE -from entities import Directory, Group +from application.entities import Directory, Group from infrastructure.pg.tables import ( directory_memberships_table, directory_table, diff --git a/src/application/utils/helpers.py b/src/application/utils/helpers.py index 296ff5978..2b208b530 100644 --- a/src/application/utils/helpers.py +++ b/src/application/utils/helpers.py @@ -149,7 +149,7 @@ from sqlalchemy.sql.compiler import DDLCompiler from sqlalchemy.sql.expression import ClauseElement, Executable, Visitable -from entities import Directory +from application.entities import Directory def validate_entry(entry: str) -> bool: diff --git a/src/application/utils/queries.py b/src/application/utils/queries.py index 669363e0b..eaa545e36 100644 --- a/src/application/utils/queries.py +++ b/src/application/utils/queries.py @@ -15,7 +15,7 @@ from sqlalchemy.orm import InstrumentedAttribute, joinedload, selectinload from sqlalchemy.sql.expression import ColumnElement -from entities import Attribute, Directory, Group, User +from application.entities import Attribute, Directory, Group, User from enums import SamAccountTypeCodes from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, diff --git a/src/application/utils/raw_definition_parser.py b/src/application/utils/raw_definition_parser.py index 69c5c896a..d05c251da 100644 --- a/src/application/utils/raw_definition_parser.py +++ b/src/application/utils/raw_definition_parser.py @@ -8,7 +8,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from entities import AttributeType, ObjectClass +from application.entities import AttributeType, ObjectClass from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/domain/__init__.py b/src/domain/__init__.py new file mode 100644 index 000000000..5f4b7ad5e --- /dev/null +++ b/src/domain/__init__.py @@ -0,0 +1,5 @@ +"""Multidirectory domain layer. + +Copyright (c) 2026 MultiFactor +License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE +""" \ No newline at end of file diff --git a/src/extra/scripts/principal_block_user_sync.py b/src/extra/scripts/principal_block_user_sync.py index 3d6be46c1..079aab60c 100644 --- a/src/extra/scripts/principal_block_user_sync.py +++ b/src/extra/scripts/principal_block_user_sync.py @@ -11,7 +11,7 @@ from sqlalchemy.sql import select from config import Settings -from entities import Attribute, Directory, User +from application.entities import Attribute, Directory, User from application.objects import UserAccountControlFlag from application.user_account_control import get_check_uac from application.utils.queries import ( diff --git a/src/extra/scripts/uac_sync.py b/src/extra/scripts/uac_sync.py index a9c6a67a6..1df374805 100644 --- a/src/extra/scripts/uac_sync.py +++ b/src/extra/scripts/uac_sync.py @@ -9,7 +9,7 @@ from sqlalchemy.sql import func, select from config import Settings -from entities import Attribute, User +from application.entities import Attribute, User from application.kerberos import AbstractKadmin from application.objects import UserAccountControlFlag from application.utils.queries import add_lock_and_expire_attributes diff --git a/src/infrastructure/pg/tables.py b/src/infrastructure/pg/tables.py index 689241a36..3a3c21b7c 100644 --- a/src/infrastructure/pg/tables.py +++ b/src/infrastructure/pg/tables.py @@ -33,7 +33,7 @@ from sqlalchemy.sql import expression from sqlalchemy.sql.compiler import DDLCompiler -from entities import ( +from application.entities import ( AccessControlEntry, Attribute, AttributeType, diff --git a/tests/conftest.py b/tests/conftest.py index 8ac4ad1b1..1b00760da 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -64,7 +64,7 @@ from authorization_provider_protocol import AuthorizationProviderProtocol from config import Settings from constants import ENTITY_TYPE_DATAS -from entities import AttributeType +from application.entities import AttributeType from enums import AuthorizationRules from ioc import AuditRedisClient, MFACredsProvider, SessionStorageClient from application.auth import AuthManager, MFAManager diff --git a/tests/test_api/test_auth/test_router.py b/tests/test_api/test_auth/test_router.py index 0e417081f..d49d44b50 100644 --- a/tests/test_api/test_auth/test_router.py +++ b/tests/test_api/test_auth/test_router.py @@ -17,7 +17,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload -from entities import CatalogueSetting, Directory, Group, NetworkPolicy, Role +from application.entities import CatalogueSetting, Directory, Group, NetworkPolicy, Role from enums import AceType, MFAChallengeStatuses, MFAFlags, RoleScope from application.auth.utils import authenticate_user from application.kerberos import AbstractKadmin diff --git a/tests/test_api/test_auth/test_router_mfa.py b/tests/test_api/test_auth/test_router_mfa.py index d68f92d63..a17c8fa83 100644 --- a/tests/test_api/test_auth/test_router_mfa.py +++ b/tests/test_api/test_auth/test_router_mfa.py @@ -9,7 +9,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from entities import CatalogueSetting +from application.entities import CatalogueSetting @pytest.mark.asyncio diff --git a/tests/test_api/test_main/conftest.py b/tests/test_api/test_main/conftest.py index ec2b01660..4ab9606ab 100644 --- a/tests/test_api/test_main/conftest.py +++ b/tests/test_api/test_main/conftest.py @@ -9,7 +9,7 @@ from httpx import ASGITransport, AsyncClient from sqlalchemy.ext.asyncio import AsyncSession -from entities import CatalogueSetting +from application.entities import CatalogueSetting from application.dns import ( DNS_MANAGER_IP_ADDRESS_NAME, DNS_MANAGER_STATE_NAME, diff --git a/tests/test_api/test_network/test_router.py b/tests/test_api/test_network/test_router.py index b98759bcd..8d94edcc8 100644 --- a/tests/test_api/test_network/test_router.py +++ b/tests/test_api/test_network/test_router.py @@ -12,7 +12,7 @@ from httpx import AsyncClient from sqlalchemy.ext.asyncio import AsyncSession -from entities import NetworkPolicy +from application.entities import NetworkPolicy @pytest.mark.asyncio diff --git a/tests/test_api/test_shadow/conftest.py b/tests/test_api/test_shadow/conftest.py index 9be61f2ef..957486f2e 100644 --- a/tests/test_api/test_shadow/conftest.py +++ b/tests/test_api/test_shadow/conftest.py @@ -10,7 +10,7 @@ from pydantic import BaseModel from sqlalchemy.ext.asyncio import AsyncSession -from entities import CatalogueSetting +from application.entities import CatalogueSetting from application.ldap_codes import LDAPCodes diff --git a/tests/test_api/test_shadow/test_router.py b/tests/test_api/test_shadow/test_router.py index 815d19798..713d21707 100644 --- a/tests/test_api/test_shadow/test_router.py +++ b/tests/test_api/test_shadow/test_router.py @@ -10,7 +10,7 @@ from sqlalchemy import delete, update from sqlalchemy.ext.asyncio import AsyncSession -from entities import NetworkPolicy +from application.entities import NetworkPolicy from enums import MFAFlags from .conftest import ProxyRequestModel diff --git a/tests/test_ldap/policies/test_network/test_pool_client_handler.py b/tests/test_ldap/policies/test_network/test_pool_client_handler.py index 8428d2f41..962be390e 100644 --- a/tests/test_ldap/policies/test_network/test_pool_client_handler.py +++ b/tests/test_ldap/policies/test_network/test_pool_client_handler.py @@ -9,7 +9,7 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession -from entities import NetworkPolicy +from application.entities import NetworkPolicy from enums import ProtocolType from application.policies.network import NetworkPolicyValidatorUseCase from application.utils.queries import get_group, get_user diff --git a/tests/test_ldap/test_access_manager/conftest.py b/tests/test_ldap/test_access_manager/conftest.py index 199d15657..ae4b1968d 100644 --- a/tests/test_ldap/test_access_manager/conftest.py +++ b/tests/test_ldap/test_access_manager/conftest.py @@ -6,7 +6,7 @@ from unittest.mock import Mock -from entities import AccessControlEntry +from application.entities import AccessControlEntry from enums import AceType diff --git a/tests/test_ldap/test_access_manager/test_entity_level_access.py b/tests/test_ldap/test_access_manager/test_entity_level_access.py index 89deafaf2..0a2d5b29e 100644 --- a/tests/test_ldap/test_access_manager/test_entity_level_access.py +++ b/tests/test_ldap/test_access_manager/test_entity_level_access.py @@ -6,7 +6,7 @@ import pytest -from entities import AccessControlEntry +from application.entities import AccessControlEntry from application.roles.access_manager import AccessManager from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_access_manager/test_modify_access.py b/tests/test_ldap/test_access_manager/test_modify_access.py index 8e9c23c49..6c5e93b99 100644 --- a/tests/test_ldap/test_access_manager/test_modify_access.py +++ b/tests/test_ldap/test_access_manager/test_modify_access.py @@ -6,7 +6,7 @@ import pytest -from entities import AccessControlEntry +from application.entities import AccessControlEntry from enums import AceType from application.ldap_responses import PartialAttribute from application.objects import Changes, Operation diff --git a/tests/test_ldap/test_access_manager/test_search_access.py b/tests/test_ldap/test_access_manager/test_search_access.py index 680b25dc3..62269278f 100644 --- a/tests/test_ldap/test_access_manager/test_search_access.py +++ b/tests/test_ldap/test_access_manager/test_search_access.py @@ -6,7 +6,7 @@ import pytest -from entities import AccessControlEntry +from application.entities import AccessControlEntry from application.roles.access_manager import AccessManager from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_bind.py b/tests/test_ldap/test_bind.py index 6831dcdbb..bebcc1044 100644 --- a/tests/test_ldap/test_bind.py +++ b/tests/test_ldap/test_bind.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from entities import Attribute, Directory, User +from application.entities import Attribute, Directory, User from application.dependency import resolve_deps from application.dialogue import LDAPSession from application.ldap_requests.bind import ( diff --git a/tests/test_ldap/test_container_restrictions/conftest.py b/tests/test_ldap/test_container_restrictions/conftest.py index 62032557b..337b7d1f2 100644 --- a/tests/test_ldap/test_container_restrictions/conftest.py +++ b/tests/test_ldap/test_container_restrictions/conftest.py @@ -8,7 +8,7 @@ import pytest_asyncio -from entities import AccessControlEntry +from application.entities import AccessControlEntry from application.dialogue import UserSchema diff --git a/tests/test_ldap/test_ldap3_definition_parse.py b/tests/test_ldap/test_ldap3_definition_parse.py index 2e62ca6b6..3ba90556b 100644 --- a/tests/test_ldap/test_ldap3_definition_parse.py +++ b/tests/test_ldap/test_ldap3_definition_parse.py @@ -7,7 +7,7 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession -from entities import AttributeType, ObjectClass +from application.entities import AttributeType, ObjectClass from application.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) diff --git a/tests/test_ldap/test_roles/test_multiple_access.py b/tests/test_ldap/test_roles/test_multiple_access.py index 21acf3a4c..8abac0e0e 100644 --- a/tests/test_ldap/test_roles/test_multiple_access.py +++ b/tests/test_ldap/test_roles/test_multiple_access.py @@ -12,7 +12,7 @@ from sqlalchemy.orm import joinedload, subqueryload from config import Settings -from entities import Directory +from application.entities import Directory from enums import AceType, EntityTypeNames, RoleScope from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.entity_type_dao import EntityTypeDAO diff --git a/tests/test_ldap/test_util/test_add.py b/tests/test_ldap/test_util/test_add.py index 3fd3b1ba6..8e7c49c29 100644 --- a/tests/test_ldap/test_util/test_add.py +++ b/tests/test_ldap/test_util/test_add.py @@ -14,7 +14,7 @@ from sqlalchemy.orm import selectinload, subqueryload from config import Settings -from entities import Directory, Group, User +from application.entities import Directory, Group, User from enums import AceType, RoleScope from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes diff --git a/tests/test_ldap/test_util/test_delete.py b/tests/test_ldap/test_util/test_delete.py index 364fe6c91..f45761191 100644 --- a/tests/test_ldap/test_util/test_delete.py +++ b/tests/test_ldap/test_util/test_delete.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from entities import Directory +from application.entities import Directory from enums import AceType, RoleScope from application.ldap_codes import LDAPCodes from application.roles.ace_dao import AccessControlEntryDAO diff --git a/tests/test_ldap/test_util/test_modify.py b/tests/test_ldap/test_util/test_modify.py index d9f68be6d..d6248b39e 100644 --- a/tests/test_ldap/test_util/test_modify.py +++ b/tests/test_ldap/test_util/test_modify.py @@ -17,7 +17,7 @@ from sqlalchemy.orm import joinedload, selectinload, subqueryload from config import Settings -from entities import Directory, Group +from application.entities import Directory, Group from enums import AceType, RoleScope from application.kerberos.base import AbstractKadmin from application.ldap_codes import LDAPCodes diff --git a/tests/test_ldap/test_util/test_search.py b/tests/test_ldap/test_util/test_search.py index 73d269666..c85c9467b 100644 --- a/tests/test_ldap/test_util/test_search.py +++ b/tests/test_ldap/test_util/test_search.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import selectinload from config import Settings -from entities import User +from application.entities import User from enums import AceType, ProtocolType, RoleScope from application.asn1parser import ASN1Row, TagNumbers from application.dialogue import LDAPSession From ee4d25191a2de08361a79342650961a9feb03816 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:43:41 +0300 Subject: [PATCH 06/27] refactor: import paths from application.entities to domain.entities across multiple modules --- src/alembic/versions/05ddc0bd562a_add_roles.py | 2 +- src/alembic/versions/275222846605_initial_ldap_schema.py | 2 +- src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py | 2 +- src/alembic/versions/4442d1d982a4_remove_krb_policy.py | 2 +- src/alembic/versions/4798b12b97aa_dedicated_servers.py | 2 +- src/alembic/versions/4e8772277cfe_add_web_permissions.py | 2 +- .../6303f5c706ec_update_krbadmin_useraccountcontrol_.py | 2 +- src/alembic/versions/6c858cc05da7_add_default_admin_name.py | 2 +- src/alembic/versions/6f8fe2548893_fix_read_only.py | 2 +- src/alembic/versions/71e642808369_add_directory_is_system.py | 2 +- src/alembic/versions/8164b4a9e1f1_add_ou_computers.py | 2 +- src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py | 2 +- .../versions/a99f866a7e3a_add_user_pwd_reset_permission.py | 2 +- .../versions/ad52bc16b87d_extend_password_policy_for_api.py | 2 +- src/alembic/versions/ba78cef9700a_initial_entity_type.py | 2 +- src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py | 2 +- src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py | 2 +- src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py | 2 +- src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py | 2 +- src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py | 2 +- .../versions/df4c52a613e5_migrate_password_prop_from_E.py | 2 +- src/alembic/versions/f1abf7ef2443_add_container_object_class.py | 2 +- src/alembic/versions/f24ed0e49df2_add_filter_anr.py | 2 +- src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py | 2 +- src/alembic/versions/fafc3d0b11ec_.py | 2 +- src/api/main/schema.py | 2 +- src/api/network/utils.py | 2 +- src/application/auth/auth_manager.py | 2 +- src/application/auth/mfa_manager.py | 2 +- src/application/auth/setup_gateway.py | 2 +- src/application/auth/utils.py | 2 +- src/application/dhcp/dhcp_manager_repository.py | 2 +- src/application/dialogue.py | 2 +- src/application/dns/dns_gateway.py | 2 +- src/application/filter_interpreter.py | 2 +- src/application/identity/provider.py | 2 +- src/application/identity/provider_gateway.py | 2 +- src/application/identity/utils.py | 2 +- src/application/kerberos/ldap_structure.py | 2 +- src/application/kerberos/utils.py | 2 +- src/application/ldap_requests/add.py | 2 +- src/application/ldap_requests/base.py | 2 +- src/application/ldap_requests/bind.py | 2 +- src/application/ldap_requests/bind_methods/base.py | 2 +- src/application/ldap_requests/bind_methods/sasl_gssapi.py | 2 +- src/application/ldap_requests/bind_methods/sasl_plain.py | 2 +- src/application/ldap_requests/bind_methods/simple.py | 2 +- src/application/ldap_requests/delete.py | 2 +- src/application/ldap_requests/extended.py | 2 +- src/application/ldap_requests/modify.py | 2 +- src/application/ldap_requests/modify_dn.py | 2 +- src/application/ldap_requests/search.py | 2 +- src/application/ldap_schema/attribute_type_dao.py | 2 +- src/application/ldap_schema/attribute_value_validator.py | 2 +- src/application/ldap_schema/entity_type_dao.py | 2 +- src/application/ldap_schema/object_class_dao.py | 2 +- src/application/multifactor.py | 2 +- src/application/policies/audit/audit_use_case.py | 2 +- src/application/policies/audit/destination_dao.py | 2 +- src/application/policies/audit/events/handler.py | 2 +- src/application/policies/audit/events/normalizer.py | 2 +- src/application/policies/audit/monitor.py | 2 +- src/application/policies/audit/policies_dao.py | 2 +- src/application/policies/network/gateway.py | 2 +- src/application/policies/network/use_cases.py | 2 +- src/application/policies/network/validator_gateway.py | 2 +- src/application/policies/network/validator_protocol.py | 2 +- src/application/policies/password/ban_word_repository.py | 2 +- src/application/policies/password/dao.py | 2 +- src/application/policies/password/use_cases.py | 2 +- src/application/roles/access_manager.py | 2 +- src/application/roles/ace_dao.py | 2 +- src/application/roles/role_dao.py | 2 +- src/application/roles/role_use_case.py | 2 +- src/application/rootdse/gateway.py | 2 +- src/application/rootdse/gw_protocol.py | 2 +- src/application/session_storage/repository.py | 2 +- src/application/user_account_control.py | 2 +- src/application/utils/async_cache.py | 2 +- src/application/utils/cte.py | 2 +- src/application/utils/helpers.py | 2 +- src/application/utils/queries.py | 2 +- src/application/utils/raw_definition_parser.py | 2 +- src/{application => domain}/entities.py | 0 src/extra/scripts/principal_block_user_sync.py | 2 +- src/extra/scripts/uac_sync.py | 2 +- src/infrastructure/pg/tables.py | 2 +- tests/conftest.py | 2 +- tests/test_api/test_auth/test_router.py | 2 +- tests/test_api/test_auth/test_router_mfa.py | 2 +- tests/test_api/test_main/conftest.py | 2 +- tests/test_api/test_network/test_router.py | 2 +- tests/test_api/test_shadow/conftest.py | 2 +- tests/test_api/test_shadow/test_router.py | 2 +- .../test_ldap/policies/test_network/test_pool_client_handler.py | 2 +- tests/test_ldap/test_access_manager/conftest.py | 2 +- tests/test_ldap/test_access_manager/test_entity_level_access.py | 2 +- tests/test_ldap/test_access_manager/test_modify_access.py | 2 +- tests/test_ldap/test_access_manager/test_search_access.py | 2 +- tests/test_ldap/test_bind.py | 2 +- tests/test_ldap/test_container_restrictions/conftest.py | 2 +- tests/test_ldap/test_ldap3_definition_parse.py | 2 +- tests/test_ldap/test_roles/test_multiple_access.py | 2 +- tests/test_ldap/test_util/test_add.py | 2 +- tests/test_ldap/test_util/test_delete.py | 2 +- tests/test_ldap/test_util/test_modify.py | 2 +- tests/test_ldap/test_util/test_search.py | 2 +- 107 files changed, 106 insertions(+), 106 deletions(-) rename src/{application => domain}/entities.py (100%) diff --git a/src/alembic/versions/05ddc0bd562a_add_roles.py b/src/alembic/versions/05ddc0bd562a_add_roles.py index 3516e62f4..459822d03 100644 --- a/src/alembic/versions/05ddc0bd562a_add_roles.py +++ b/src/alembic/versions/05ddc0bd562a_add_roles.py @@ -11,7 +11,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Directory, Group +from domain.entities import Directory, Group from extra.alembic_utils import temporary_stub_column from application.roles.role_use_case import RoleUseCase from application.utils.queries import get_base_directories diff --git a/src/alembic/versions/275222846605_initial_ldap_schema.py b/src/alembic/versions/275222846605_initial_ldap_schema.py index 43a5ffeea..7a262a965 100644 --- a/src/alembic/versions/275222846605_initial_ldap_schema.py +++ b/src/alembic/versions/275222846605_initial_ldap_schema.py @@ -16,7 +16,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session, selectinload -from application.entities import Attribute, AttributeType, ObjectClass +from domain.entities import Attribute, AttributeType, ObjectClass from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.dto import AttributeTypeDTO diff --git a/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py b/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py index 489258ff5..185edfeab 100644 --- a/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py +++ b/src/alembic/versions/379fce54fb08_rename_base_cn_to_cc.py @@ -13,7 +13,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/4442d1d982a4_remove_krb_policy.py b/src/alembic/versions/4442d1d982a4_remove_krb_policy.py index 83b4a9451..22ad65bca 100644 --- a/src/alembic/versions/4442d1d982a4_remove_krb_policy.py +++ b/src/alembic/versions/4442d1d982a4_remove_krb_policy.py @@ -12,7 +12,7 @@ from sqlalchemy import delete from sqlalchemy.orm import Session -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/4798b12b97aa_dedicated_servers.py b/src/alembic/versions/4798b12b97aa_dedicated_servers.py index 1cf8e4328..55d26163f 100644 --- a/src/alembic/versions/4798b12b97aa_dedicated_servers.py +++ b/src/alembic/versions/4798b12b97aa_dedicated_servers.py @@ -12,7 +12,7 @@ from loguru import logger from sqlalchemy.orm import Session -from application.entities import CatalogueSetting, DedicatedServer +from domain.entities import CatalogueSetting, DedicatedServer from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/4e8772277cfe_add_web_permissions.py b/src/alembic/versions/4e8772277cfe_add_web_permissions.py index 2255723e7..155464231 100644 --- a/src/alembic/versions/4e8772277cfe_add_web_permissions.py +++ b/src/alembic/versions/4e8772277cfe_add_web_permissions.py @@ -11,7 +11,7 @@ from sqlalchemy import Column, select, text from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Role +from domain.entities import Role from enums import AuthorizationRules, RoleConstants from infrastructure.pg.types import AuthorizationRulesType diff --git a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index e97b61a20..6def92a78 100644 --- a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from application.objects import UserAccountControlFlag from application.utils.helpers import create_integer_hash diff --git a/src/alembic/versions/6c858cc05da7_add_default_admin_name.py b/src/alembic/versions/6c858cc05da7_add_default_admin_name.py index 3a23942c7..054931745 100644 --- a/src/alembic/versions/6c858cc05da7_add_default_admin_name.py +++ b/src/alembic/versions/6c858cc05da7_add_default_admin_name.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from application.entities import Attribute, User +from domain.entities import Attribute, User from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/6f8fe2548893_fix_read_only.py b/src/alembic/versions/6f8fe2548893_fix_read_only.py index 26e6818f9..a681d641b 100644 --- a/src/alembic/versions/6f8fe2548893_fix_read_only.py +++ b/src/alembic/versions/6f8fe2548893_fix_read_only.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import Session from constants import DOMAIN_USERS_GROUP_NAME -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from application.utils.helpers import create_integer_hash diff --git a/src/alembic/versions/71e642808369_add_directory_is_system.py b/src/alembic/versions/71e642808369_add_directory_is_system.py index 88034d7e5..0677c5270 100644 --- a/src/alembic/versions/71e642808369_add_directory_is_system.py +++ b/src/alembic/versions/71e642808369_add_directory_is_system.py @@ -19,7 +19,7 @@ DOMAIN_USERS_GROUP_NAME, READ_ONLY_GROUP_NAME, ) -from application.entities import Directory +from domain.entities import Directory from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py index f25d98312..71102d9bb 100644 --- a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py +++ b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py @@ -12,7 +12,7 @@ from sqlalchemy import delete, exists, select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Directory +from domain.entities import Directory from extra.alembic_utils import temporary_stub_column from application.roles.role_use_case import RoleUseCase from application.utils.queries import get_base_directories diff --git a/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py b/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py index 11393416d..ebf6884b4 100644 --- a/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py +++ b/src/alembic/versions/a1b2c3d4e5f6_rename_services_to_system.py @@ -11,7 +11,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py b/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py index 39a801070..45d3853d0 100644 --- a/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py +++ b/src/alembic/versions/a99f866a7e3a_add_user_pwd_reset_permission.py @@ -11,7 +11,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Role +from domain.entities import Role from enums import AuthorizationRules, RoleConstants # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py index 568d4b58c..c2d5bdc93 100644 --- a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py +++ b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py @@ -12,7 +12,7 @@ from sqlalchemy import update from sqlalchemy.orm import Session -from application.entities import PasswordPolicy +from domain.entities import PasswordPolicy from application.policies.password.dataclasses import ( DefaultDomainPasswordPolicyPreset, ) diff --git a/src/alembic/versions/ba78cef9700a_initial_entity_type.py b/src/alembic/versions/ba78cef9700a_initial_entity_type.py index de00ea546..d22c2f9ec 100644 --- a/src/alembic/versions/ba78cef9700a_initial_entity_type.py +++ b/src/alembic/versions/ba78cef9700a_initial_entity_type.py @@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from constants import ENTITY_TYPE_DATAS -from application.entities import Attribute, Directory, User +from domain.entities import Attribute, Directory, User from extra.alembic_utils import temporary_stub_column from application.ldap_schema.dto import EntityTypeDTO from application.ldap_schema.entity_type_dao import EntityTypeDAO diff --git a/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py b/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py index c82b0b850..5edc94061 100644 --- a/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py +++ b/src/alembic/versions/bf435bbd95ff_add_rdn_attr_name.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py b/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py index ebd6e9a4f..2b4b1eb4a 100644 --- a/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py +++ b/src/alembic/versions/bv546ccd35fa_fix_krbadmin_attrs.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index 5291d50b4..0072853ed 100644 --- a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from application.entities import Attribute, Directory, NetworkPolicy +from domain.entities import Attribute, Directory, NetworkPolicy from extra.alembic_utils import temporary_stub_column from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.utils.helpers import create_integer_hash diff --git a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py index 8d91b09dc..69afed002 100644 --- a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py +++ b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py @@ -11,7 +11,7 @@ from sqlalchemy import delete from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import EntityType +from domain.entities import EntityType from enums import EntityTypeNames from application.ldap_schema.dto import EntityTypeDTO from application.ldap_schema.entity_type_use_case import EntityTypeUseCase diff --git a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py index e148cb179..40b639549 100644 --- a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py +++ b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py @@ -11,7 +11,7 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session -from application.entities import Attribute, CatalogueSetting, User +from domain.entities import Attribute, CatalogueSetting, User from extra.alembic_utils import temporary_stub_column from application.kerberos import KERBEROS_STATE_NAME from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py index e164a1a71..1c6ce94a2 100644 --- a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py +++ b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session -from application.entities import PasswordPolicy +from domain.entities import PasswordPolicy from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, ) diff --git a/src/alembic/versions/f1abf7ef2443_add_container_object_class.py b/src/alembic/versions/f1abf7ef2443_add_container_object_class.py index dec2b668f..730bbb0e6 100644 --- a/src/alembic/versions/f1abf7ef2443_add_container_object_class.py +++ b/src/alembic/versions/f1abf7ef2443_add_container_object_class.py @@ -12,7 +12,7 @@ from sqlalchemy import delete, func, insert, select, update from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Attribute, Directory, EntityType +from domain.entities import Attribute, Directory, EntityType from enums import EntityTypeNames from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/f24ed0e49df2_add_filter_anr.py b/src/alembic/versions/f24ed0e49df2_add_filter_anr.py index 7042719d9..758f76b20 100644 --- a/src/alembic/versions/f24ed0e49df2_add_filter_anr.py +++ b/src/alembic/versions/f24ed0e49df2_add_filter_anr.py @@ -12,7 +12,7 @@ from sqlalchemy.dialects import postgresql from sqlalchemy.orm import Session -from application.entities import AttributeType +from domain.entities import AttributeType from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py b/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py index 2420f8c21..e2d3b5e1a 100644 --- a/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py +++ b/src/alembic/versions/f4e6cd18a01d_add_samaccounttype.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from application.entities import Attribute, Directory, EntityType +from domain.entities import Attribute, Directory, EntityType from enums import EntityTypeNames, SamAccountTypeCodes from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/alembic/versions/fafc3d0b11ec_.py b/src/alembic/versions/fafc3d0b11ec_.py index b2d1294ed..c3d1a492e 100644 --- a/src/alembic/versions/fafc3d0b11ec_.py +++ b/src/alembic/versions/fafc3d0b11ec_.py @@ -13,7 +13,7 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from application.entities import Directory +from domain.entities import Directory from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, diff --git a/src/api/main/schema.py b/src/api/main/schema.py index 02c4e4af2..8fbf117d1 100644 --- a/src/api/main/schema.py +++ b/src/api/main/schema.py @@ -11,7 +11,7 @@ from pydantic import BaseModel, Field, PrivateAttr, SecretStr from sqlalchemy.sql.elements import ColumnElement, UnaryExpression -from application.entities import Directory +from domain.entities import Directory from application.dns import DNSManagerState, DNSZoneParam, DNSZoneType from application.filter_interpreter import ( Filter, diff --git a/src/api/network/utils.py b/src/api/network/utils.py index 386e1e944..16004381e 100644 --- a/src/api/network/utils.py +++ b/src/api/network/utils.py @@ -8,7 +8,7 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import NetworkPolicy +from domain.entities import NetworkPolicy async def check_policy_count(session: AsyncSession) -> None: diff --git a/src/application/auth/auth_manager.py b/src/application/auth/auth_manager.py index f7b166394..079a3c910 100644 --- a/src/application/auth/auth_manager.py +++ b/src/application/auth/auth_manager.py @@ -12,7 +12,7 @@ from abstract_service import AbstractService from config import Settings -from application.entities import User +from domain.entities import User from enums import AuthorizationRules, MFAFlags from application.auth.dto import SetupDTO from application.auth.mfa_manager import MFAManager diff --git a/src/application/auth/mfa_manager.py b/src/application/auth/mfa_manager.py index aba36f258..0efab30a1 100644 --- a/src/application/auth/mfa_manager.py +++ b/src/application/auth/mfa_manager.py @@ -19,7 +19,7 @@ from abstract_service import AbstractService from config import Settings -from application.entities import CatalogueSetting, NetworkPolicy, User +from domain.entities import CatalogueSetting, NetworkPolicy, User from enums import AuthorizationRules, MFAChallengeStatuses, MFAFlags from application.auth.exceptions.mfa import ( AuthenticationError, diff --git a/src/application/auth/setup_gateway.py b/src/application/auth/setup_gateway.py index 7b78525cc..14c1080c4 100644 --- a/src/application/auth/setup_gateway.py +++ b/src/application/auth/setup_gateway.py @@ -11,7 +11,7 @@ from sqlalchemy import exists, select from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import Attribute, Directory, Group, NetworkPolicy, User +from domain.entities import Attribute, Directory, Group, NetworkPolicy, User from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) diff --git a/src/application/auth/utils.py b/src/application/auth/utils.py index 63613a11d..54f5e2370 100644 --- a/src/application/auth/utils.py +++ b/src/application/auth/utils.py @@ -6,7 +6,7 @@ from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import User +from domain.entities import User from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/dhcp/dhcp_manager_repository.py b/src/application/dhcp/dhcp_manager_repository.py index f3e40cf64..e914f4c2b 100644 --- a/src/application/dhcp/dhcp_manager_repository.py +++ b/src/application/dhcp/dhcp_manager_repository.py @@ -7,7 +7,7 @@ from sqlalchemy import select, update from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import CatalogueSetting +from domain.entities import CatalogueSetting from infrastructure.pg.tables import queryable_attr as qa from .enums import DHCPManagerState diff --git a/src/application/dialogue.py b/src/application/dialogue.py index 077ddbc8c..54b371af3 100644 --- a/src/application/dialogue.py +++ b/src/application/dialogue.py @@ -17,7 +17,7 @@ import gssapi -from application.entities import NetworkPolicy, User +from domain.entities import NetworkPolicy, User from enums import ProtocolType from application.policies.network import NetworkPolicyValidatorUseCase diff --git a/src/application/dns/dns_gateway.py b/src/application/dns/dns_gateway.py index cf03d04e0..4ddb71996 100644 --- a/src/application/dns/dns_gateway.py +++ b/src/application/dns/dns_gateway.py @@ -9,7 +9,7 @@ from sqlalchemy import case, select, update from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import CatalogueSetting +from domain.entities import CatalogueSetting from application.dns.base import ( DNS_MANAGER_IP_ADDRESS_NAME, DNS_MANAGER_STATE_NAME, diff --git a/src/application/filter_interpreter.py b/src/application/filter_interpreter.py index d184a7951..e9aa80352 100644 --- a/src/application/filter_interpreter.py +++ b/src/application/filter_interpreter.py @@ -22,7 +22,7 @@ ) from sqlalchemy.sql.expression import false as sql_false -from application.entities import ( +from domain.entities import ( Attribute, AttributeType, Directory, diff --git a/src/application/identity/provider.py b/src/application/identity/provider.py index 393d97e5f..90ef3b5b4 100644 --- a/src/application/identity/provider.py +++ b/src/application/identity/provider.py @@ -7,7 +7,7 @@ from loguru import logger from config import Settings -from application.entities import User +from domain.entities import User from enums import AuthorizationRules from application.dialogue import UserSchema from application.identity.exceptions import UnauthorizedError diff --git a/src/application/identity/provider_gateway.py b/src/application/identity/provider_gateway.py index 0b5cf89f9..e147f3e3e 100644 --- a/src/application/identity/provider_gateway.py +++ b/src/application/identity/provider_gateway.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload -from application.entities import Group, Role, User +from domain.entities import Group, Role, User from enums import AuthorizationRules from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/identity/utils.py b/src/application/identity/utils.py index 899e4537a..4fa26163d 100644 --- a/src/application/identity/utils.py +++ b/src/application/identity/utils.py @@ -9,7 +9,7 @@ from fastapi import HTTPException, Request, status from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import User +from domain.entities import User from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/kerberos/ldap_structure.py b/src/application/kerberos/ldap_structure.py index cc30f60db..ed8ad38dd 100644 --- a/src/application/kerberos/ldap_structure.py +++ b/src/application/kerberos/ldap_structure.py @@ -7,7 +7,7 @@ from sqlalchemy import delete, or_, select from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import Directory +from domain.entities import Directory from application.kerberos.exceptions import KerberosConflictError from application.ldap_requests import AddRequest from application.ldap_requests.contexts import LDAPAddRequestContext diff --git a/src/application/kerberos/utils.py b/src/application/kerberos/utils.py index 071d33b4b..c9e8e6794 100644 --- a/src/application/kerberos/utils.py +++ b/src/application/kerberos/utils.py @@ -8,7 +8,7 @@ from sqlalchemy import delete, select, update from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import Attribute, CatalogueSetting, Directory, EntityType +from domain.entities import Attribute, CatalogueSetting, Directory, EntityType from enums import EntityTypeNames, StrEnum from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/ldap_requests/add.py b/src/application/ldap_requests/add.py index 7db90e89a..62b0aa133 100644 --- a/src/application/ldap_requests/add.py +++ b/src/application/ldap_requests/add.py @@ -12,7 +12,7 @@ from sqlalchemy.exc import IntegrityError from constants import DOMAIN_COMPUTERS_GROUP_NAME, DOMAIN_USERS_GROUP_NAME -from application.entities import Attribute, Directory, Group, User +from domain.entities import Attribute, Directory, Group, User from enums import AceType, EntityTypeNames, SamAccountTypeCodes from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( diff --git a/src/application/ldap_requests/base.py b/src/application/ldap_requests/base.py index 101543f1d..9ed4ec21a 100644 --- a/src/application/ldap_requests/base.py +++ b/src/application/ldap_requests/base.py @@ -21,7 +21,7 @@ from sqlalchemy.exc import OperationalError from config import Settings -from application.entities import Directory +from domain.entities import Directory from application.dependency import resolve_deps from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes diff --git a/src/application/ldap_requests/bind.py b/src/application/ldap_requests/bind.py index 6ffdd27b6..ab2b026eb 100644 --- a/src/application/ldap_requests/bind.py +++ b/src/application/ldap_requests/bind.py @@ -10,7 +10,7 @@ from pydantic import Field from sqlalchemy.exc import OperationalError -from application.entities import NetworkPolicy +from domain.entities import NetworkPolicy from enums import MFAFlags from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( diff --git a/src/application/ldap_requests/bind_methods/base.py b/src/application/ldap_requests/bind_methods/base.py index d23f6dcae..64b043c3b 100644 --- a/src/application/ldap_requests/bind_methods/base.py +++ b/src/application/ldap_requests/bind_methods/base.py @@ -11,7 +11,7 @@ from pydantic import BaseModel, Field, SecretStr from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import User +from domain.entities import User from application.asn1parser import ASN1Row from application.ldap_codes import LDAPCodes from application.ldap_responses import BindResponse diff --git a/src/application/ldap_requests/bind_methods/sasl_gssapi.py b/src/application/ldap_requests/bind_methods/sasl_gssapi.py index c5df53e1e..3e464ee7b 100644 --- a/src/application/ldap_requests/bind_methods/sasl_gssapi.py +++ b/src/application/ldap_requests/bind_methods/sasl_gssapi.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from application.entities import User +from domain.entities import User from application.asn1parser import ASN1Row from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes diff --git a/src/application/ldap_requests/bind_methods/sasl_plain.py b/src/application/ldap_requests/bind_methods/sasl_plain.py index 69e18c24c..27454853a 100644 --- a/src/application/ldap_requests/bind_methods/sasl_plain.py +++ b/src/application/ldap_requests/bind_methods/sasl_plain.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import User +from domain.entities import User from application.asn1parser import ASN1Row from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/ldap_requests/bind_methods/simple.py b/src/application/ldap_requests/bind_methods/simple.py index 6fafd5d54..661be3d79 100644 --- a/src/application/ldap_requests/bind_methods/simple.py +++ b/src/application/ldap_requests/bind_methods/simple.py @@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import User +from domain.entities import User from application.utils.queries import get_user from password_utils import PasswordUtils diff --git a/src/application/ldap_requests/delete.py b/src/application/ldap_requests/delete.py index 6c3a6062f..bba37a325 100644 --- a/src/application/ldap_requests/delete.py +++ b/src/application/ldap_requests/delete.py @@ -9,7 +9,7 @@ from sqlalchemy import delete, exists, select from sqlalchemy.orm import joinedload, selectinload -from application.entities import Directory, Group +from domain.entities import Directory, Group from enums import AceType from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( diff --git a/src/application/ldap_requests/extended.py b/src/application/ldap_requests/extended.py index 8f2b4381d..c9a99474d 100644 --- a/src/application/ldap_requests/extended.py +++ b/src/application/ldap_requests/extended.py @@ -12,7 +12,7 @@ from pydantic import BaseModel, SecretStr, SerializeAsAny from sqlalchemy import update -from application.entities import Directory, User +from domain.entities import Directory, User from application.asn1parser import LDAPOID, ASN1Row, asn1todict from application.kerberos.exceptions import ( KRBAPIChangePasswordError, diff --git a/src/application/ldap_requests/modify.py b/src/application/ldap_requests/modify.py index b50515684..5d9ab0424 100644 --- a/src/application/ldap_requests/modify.py +++ b/src/application/ldap_requests/modify.py @@ -16,7 +16,7 @@ from config import Settings from constants import DOMAIN_ADMIN_GROUP_NAME -from application.entities import Attribute, Directory, Group, User +from domain.entities import Attribute, Directory, Group, User from enums import AceType, EntityTypeNames from application.asn1parser import ASN1Row from application.dialogue import UserSchema diff --git a/src/application/ldap_requests/modify_dn.py b/src/application/ldap_requests/modify_dn.py index f2cde4ba5..513189981 100644 --- a/src/application/ldap_requests/modify_dn.py +++ b/src/application/ldap_requests/modify_dn.py @@ -10,7 +10,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import joinedload, selectinload -from application.entities import AccessControlEntry, Attribute, Directory +from domain.entities import AccessControlEntry, Attribute, Directory from enums import AceType from application.asn1parser import ASN1Row from application.ldap_codes import LDAPCodes diff --git a/src/application/ldap_requests/search.py b/src/application/ldap_requests/search.py index ff93be280..a245f26d7 100644 --- a/src/application/ldap_requests/search.py +++ b/src/application/ldap_requests/search.py @@ -23,7 +23,7 @@ from sqlalchemy.sql.elements import ColumnElement, UnaryExpression from sqlalchemy.sql.expression import Select -from application.entities import ( +from domain.entities import ( Attribute, AttributeType, Directory, diff --git a/src/application/ldap_schema/attribute_type_dao.py b/src/application/ldap_schema/attribute_type_dao.py index a68a0b19f..12d64608e 100644 --- a/src/application/ldap_schema/attribute_type_dao.py +++ b/src/application/ldap_schema/attribute_type_dao.py @@ -15,7 +15,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_dao import AbstractDAO -from application.entities import AttributeType +from domain.entities import AttributeType from application.ldap_schema.dto import AttributeTypeDTO from application.ldap_schema.exceptions import ( AttributeTypeAlreadyExistsError, diff --git a/src/application/ldap_schema/attribute_value_validator.py b/src/application/ldap_schema/attribute_value_validator.py index f00f19c43..4fe553ab1 100644 --- a/src/application/ldap_schema/attribute_value_validator.py +++ b/src/application/ldap_schema/attribute_value_validator.py @@ -8,7 +8,7 @@ from collections import defaultdict from typing import Callable, cast as tcast -from application.entities import Attribute, Directory, User +from domain.entities import Attribute, Directory, User from enums import EntityTypeNames from application.objects import PartialAttribute diff --git a/src/application/ldap_schema/entity_type_dao.py b/src/application/ldap_schema/entity_type_dao.py index 4f318e30d..98e9ba995 100644 --- a/src/application/ldap_schema/entity_type_dao.py +++ b/src/application/ldap_schema/entity_type_dao.py @@ -15,7 +15,7 @@ from sqlalchemy.orm import selectinload from abstract_dao import AbstractDAO -from application.entities import Attribute, Directory, EntityType, ObjectClass +from domain.entities import Attribute, Directory, EntityType, ObjectClass from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, AttributeValueValidatorError, diff --git a/src/application/ldap_schema/object_class_dao.py b/src/application/ldap_schema/object_class_dao.py index c918c7521..6de71bbd3 100644 --- a/src/application/ldap_schema/object_class_dao.py +++ b/src/application/ldap_schema/object_class_dao.py @@ -18,7 +18,7 @@ from sqlalchemy.orm import selectinload from abstract_dao import AbstractDAO -from application.entities import AttributeType, EntityType, ObjectClass +from domain.entities import AttributeType, EntityType, ObjectClass from application.utils.pagination import ( PaginationParams, PaginationResult, diff --git a/src/application/multifactor.py b/src/application/multifactor.py index e2e85b477..d29d81b1b 100644 --- a/src/application/multifactor.py +++ b/src/application/multifactor.py @@ -15,7 +15,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from application.entities import CatalogueSetting +from domain.entities import CatalogueSetting from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/policies/audit/audit_use_case.py b/src/application/policies/audit/audit_use_case.py index 28852725e..79c158609 100644 --- a/src/application/policies/audit/audit_use_case.py +++ b/src/application/policies/audit/audit_use_case.py @@ -4,7 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from application.entities import AuditSeverity +from domain.entities import AuditSeverity from application.asn1parser import LDAPOID from application.objects import OperationEvent, UserAccountControlFlag diff --git a/src/application/policies/audit/destination_dao.py b/src/application/policies/audit/destination_dao.py index f8216a713..a7cfd4d89 100644 --- a/src/application/policies/audit/destination_dao.py +++ b/src/application/policies/audit/destination_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_dao import AbstractDAO -from application.entities import AuditDestination +from domain.entities import AuditDestination from .dataclasses import AuditDestinationDTO from .exception import AuditNotFoundError diff --git a/src/application/policies/audit/events/handler.py b/src/application/policies/audit/events/handler.py index c286bdb1d..8f80b907b 100644 --- a/src/application/policies/audit/events/handler.py +++ b/src/application/policies/audit/events/handler.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from application.entities import AuditPolicy, AuditPolicyTrigger +from domain.entities import AuditPolicy, AuditPolicyTrigger from application.ldap_codes import LDAPCodes from application.objects import OperationEvent from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/policies/audit/events/normalizer.py b/src/application/policies/audit/events/normalizer.py index 09a273ea3..418e61bf7 100644 --- a/src/application/policies/audit/events/normalizer.py +++ b/src/application/policies/audit/events/normalizer.py @@ -4,7 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from application.entities import AuditPolicyTrigger +from domain.entities import AuditPolicyTrigger from application.objects import OperationEvent from .dataclasses import NormalizedAuditEvent, RawAuditEvent diff --git a/src/application/policies/audit/monitor.py b/src/application/policies/audit/monitor.py index 16319e0fd..5a17c3244 100644 --- a/src/application/policies/audit/monitor.py +++ b/src/application/policies/audit/monitor.py @@ -13,7 +13,7 @@ from starlette.datastructures import URL from config import Settings -from application.entities import User +from domain.entities import User from application.auth.exceptions.mfa import ( AuthenticationError, ForbiddenError, diff --git a/src/application/policies/audit/policies_dao.py b/src/application/policies/audit/policies_dao.py index b99bf3a98..b613c42e5 100644 --- a/src/application/policies/audit/policies_dao.py +++ b/src/application/policies/audit/policies_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_dao import AbstractDAO -from application.entities import AuditPolicy, AuditPolicyTrigger +from domain.entities import AuditPolicy, AuditPolicyTrigger from .dataclasses import AuditPolicyDTO, AuditPolicySetupDTO from .exception import AuditNotFoundError diff --git a/src/application/policies/network/gateway.py b/src/application/policies/network/gateway.py index dc808e2ec..1157abb3d 100644 --- a/src/application/policies/network/gateway.py +++ b/src/application/policies/network/gateway.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from application.entities import Group, NetworkPolicy +from domain.entities import Group, NetworkPolicy from application.policies.network.exceptions import ( NetworkPolicyAlreadyExistsError, NetworkPolicyNotFoundError, diff --git a/src/application/policies/network/use_cases.py b/src/application/policies/network/use_cases.py index 419778991..0d38497c9 100644 --- a/src/application/policies/network/use_cases.py +++ b/src/application/policies/network/use_cases.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from application.entities import NetworkPolicy, User +from domain.entities import NetworkPolicy, User from enums import AuthorizationRules, ProtocolType from application.policies.network.dto import ( NetworkPolicyDTO, diff --git a/src/application/policies/network/validator_gateway.py b/src/application/policies/network/validator_gateway.py index e4c8317a2..079876e83 100644 --- a/src/application/policies/network/validator_gateway.py +++ b/src/application/policies/network/validator_gateway.py @@ -11,7 +11,7 @@ from sqlalchemy.orm import selectinload from sqlalchemy.sql.expression import Select, true -from application.entities import Group, NetworkPolicy, User +from domain.entities import Group, NetworkPolicy, User from enums import ProtocolType from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/policies/network/validator_protocol.py b/src/application/policies/network/validator_protocol.py index 5bc513731..85e4bcd7d 100644 --- a/src/application/policies/network/validator_protocol.py +++ b/src/application/policies/network/validator_protocol.py @@ -7,7 +7,7 @@ from ipaddress import IPv4Address, IPv6Address from typing import Protocol -from application.entities import NetworkPolicy, User +from domain.entities import NetworkPolicy, User from enums import ProtocolType diff --git a/src/application/policies/password/ban_word_repository.py b/src/application/policies/password/ban_word_repository.py index 3d12a9b44..de042a349 100644 --- a/src/application/policies/password/ban_word_repository.py +++ b/src/application/policies/password/ban_word_repository.py @@ -10,7 +10,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import PasswordBanWord +from domain.entities import PasswordBanWord from application.policies.password.exceptions import ( PasswordBanWordFileHasDuplicatesError, ) diff --git a/src/application/policies/password/dao.py b/src/application/policies/password/dao.py index 40047a1ff..d612be719 100644 --- a/src/application/policies/password/dao.py +++ b/src/application/policies/password/dao.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import attributes, selectinload from abstract_dao import AbstractDAO -from application.entities import Attribute, Group, PasswordPolicy, User +from domain.entities import Attribute, Group, PasswordPolicy, User from enums import EntityTypeNames from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, diff --git a/src/application/policies/password/use_cases.py b/src/application/policies/password/use_cases.py index 1daea6621..076d88f6d 100644 --- a/src/application/policies/password/use_cases.py +++ b/src/application/policies/password/use_cases.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from application.entities import User +from domain.entities import User from enums import AuthorizationRules from application.identity.exceptions import UserNotFoundError from application.policies.password.ban_word_repository import ( diff --git a/src/application/roles/access_manager.py b/src/application/roles/access_manager.py index 37457b683..215abce1a 100644 --- a/src/application/roles/access_manager.py +++ b/src/application/roles/access_manager.py @@ -9,7 +9,7 @@ from sqlalchemy import Select, and_ from sqlalchemy.orm import selectinload, with_loader_criteria -from application.entities import AccessControlEntry, Directory +from domain.entities import AccessControlEntry, Directory from enums import AceType, RoleScope from application.objects import Changes, Operation from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/roles/ace_dao.py b/src/application/roles/ace_dao.py index d5c8d5df2..f7d564eb4 100644 --- a/src/application/roles/ace_dao.py +++ b/src/application/roles/ace_dao.py @@ -12,7 +12,7 @@ from sqlalchemy.orm import joinedload, selectinload from abstract_dao import AbstractDAO -from application.entities import AccessControlEntry, Directory +from domain.entities import AccessControlEntry, Directory from enums import AceType, RoleScope from application.utils.helpers import get_depth_by_dn from application.utils.queries import get_path_filter, get_search_path diff --git a/src/application/roles/role_dao.py b/src/application/roles/role_dao.py index 3a52bf7bf..d84d8a4c5 100644 --- a/src/application/roles/role_dao.py +++ b/src/application/roles/role_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.orm import joinedload, selectinload from abstract_dao import AbstractDAO -from application.entities import AccessControlEntry, Group, Role +from domain.entities import AccessControlEntry, Group, Role from enums import AuthorizationRules, RoleConstants from application.utils.queries import get_groups from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/roles/role_use_case.py b/src/application/roles/role_use_case.py index 8c83a7064..77108e73d 100644 --- a/src/application/roles/role_use_case.py +++ b/src/application/roles/role_use_case.py @@ -6,7 +6,7 @@ from sqlalchemy import and_, insert, literal, or_, select -from application.entities import AccessControlEntry, AceType, Directory, Role +from domain.entities import AccessControlEntry, AceType, Directory, Role from enums import AuthorizationRules, RoleConstants, RoleScope from application.kerberos.utils import get_system_container_dn from application.utils.queries import get_base_directories diff --git a/src/application/rootdse/gateway.py b/src/application/rootdse/gateway.py index 51b380594..cd6b07a14 100644 --- a/src/application/rootdse/gateway.py +++ b/src/application/rootdse/gateway.py @@ -7,7 +7,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import Directory +from domain.entities import Directory class SADomainGateway: diff --git a/src/application/rootdse/gw_protocol.py b/src/application/rootdse/gw_protocol.py index f5f6967f4..faaca8bac 100644 --- a/src/application/rootdse/gw_protocol.py +++ b/src/application/rootdse/gw_protocol.py @@ -6,7 +6,7 @@ from typing import Protocol -from application.entities import Directory +from domain.entities import Directory class DomainReadProtocol(Protocol): diff --git a/src/application/session_storage/repository.py b/src/application/session_storage/repository.py index 1334e8d71..658381226 100644 --- a/src/application/session_storage/repository.py +++ b/src/application/session_storage/repository.py @@ -10,7 +10,7 @@ from abstract_service import AbstractService from config import Settings -from application.entities import User +from domain.entities import User from enums import AuthorizationRules from application.utils.queries import get_user, set_user_logon_attrs diff --git a/src/application/user_account_control.py b/src/application/user_account_control.py index 158e549d4..d9efa7191 100644 --- a/src/application/user_account_control.py +++ b/src/application/user_account_control.py @@ -9,7 +9,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import Attribute +from domain.entities import Attribute from application.objects import ( UserAccountControlFlag as UserAccountControlFlag, ) diff --git a/src/application/utils/async_cache.py b/src/application/utils/async_cache.py index d6cf80249..db1da3f94 100644 --- a/src/application/utils/async_cache.py +++ b/src/application/utils/async_cache.py @@ -4,7 +4,7 @@ from functools import wraps from typing import Callable, Generic, TypeVar -from application.entities import Directory +from domain.entities import Directory T = TypeVar("T") DEFAULT_CACHE_TIME = 5 * 60 # 5 minutes diff --git a/src/application/utils/cte.py b/src/application/utils/cte.py index 00595553f..3b7304e91 100644 --- a/src/application/utils/cte.py +++ b/src/application/utils/cte.py @@ -9,7 +9,7 @@ from sqlalchemy.sql.expression import select from sqlalchemy.sql.selectable import CTE -from application.entities import Directory, Group +from domain.entities import Directory, Group from infrastructure.pg.tables import ( directory_memberships_table, directory_table, diff --git a/src/application/utils/helpers.py b/src/application/utils/helpers.py index 2b208b530..94af7ed49 100644 --- a/src/application/utils/helpers.py +++ b/src/application/utils/helpers.py @@ -149,7 +149,7 @@ from sqlalchemy.sql.compiler import DDLCompiler from sqlalchemy.sql.expression import ClauseElement, Executable, Visitable -from application.entities import Directory +from domain.entities import Directory def validate_entry(entry: str) -> bool: diff --git a/src/application/utils/queries.py b/src/application/utils/queries.py index eaa545e36..283cb509d 100644 --- a/src/application/utils/queries.py +++ b/src/application/utils/queries.py @@ -15,7 +15,7 @@ from sqlalchemy.orm import InstrumentedAttribute, joinedload, selectinload from sqlalchemy.sql.expression import ColumnElement -from application.entities import Attribute, Directory, Group, User +from domain.entities import Attribute, Directory, Group, User from enums import SamAccountTypeCodes from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, diff --git a/src/application/utils/raw_definition_parser.py b/src/application/utils/raw_definition_parser.py index d05c251da..406c8269b 100644 --- a/src/application/utils/raw_definition_parser.py +++ b/src/application/utils/raw_definition_parser.py @@ -8,7 +8,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import AttributeType, ObjectClass +from domain.entities import AttributeType, ObjectClass from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/entities.py b/src/domain/entities.py similarity index 100% rename from src/application/entities.py rename to src/domain/entities.py diff --git a/src/extra/scripts/principal_block_user_sync.py b/src/extra/scripts/principal_block_user_sync.py index 079aab60c..53b251efa 100644 --- a/src/extra/scripts/principal_block_user_sync.py +++ b/src/extra/scripts/principal_block_user_sync.py @@ -11,7 +11,7 @@ from sqlalchemy.sql import select from config import Settings -from application.entities import Attribute, Directory, User +from domain.entities import Attribute, Directory, User from application.objects import UserAccountControlFlag from application.user_account_control import get_check_uac from application.utils.queries import ( diff --git a/src/extra/scripts/uac_sync.py b/src/extra/scripts/uac_sync.py index 1df374805..e20f01d64 100644 --- a/src/extra/scripts/uac_sync.py +++ b/src/extra/scripts/uac_sync.py @@ -9,7 +9,7 @@ from sqlalchemy.sql import func, select from config import Settings -from application.entities import Attribute, User +from domain.entities import Attribute, User from application.kerberos import AbstractKadmin from application.objects import UserAccountControlFlag from application.utils.queries import add_lock_and_expire_attributes diff --git a/src/infrastructure/pg/tables.py b/src/infrastructure/pg/tables.py index 3a3c21b7c..49a00f648 100644 --- a/src/infrastructure/pg/tables.py +++ b/src/infrastructure/pg/tables.py @@ -33,7 +33,7 @@ from sqlalchemy.sql import expression from sqlalchemy.sql.compiler import DDLCompiler -from application.entities import ( +from domain.entities import ( AccessControlEntry, Attribute, AttributeType, diff --git a/tests/conftest.py b/tests/conftest.py index 1b00760da..57a708f50 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -64,7 +64,7 @@ from authorization_provider_protocol import AuthorizationProviderProtocol from config import Settings from constants import ENTITY_TYPE_DATAS -from application.entities import AttributeType +from domain.entities import AttributeType from enums import AuthorizationRules from ioc import AuditRedisClient, MFACredsProvider, SessionStorageClient from application.auth import AuthManager, MFAManager diff --git a/tests/test_api/test_auth/test_router.py b/tests/test_api/test_auth/test_router.py index d49d44b50..37fd771a0 100644 --- a/tests/test_api/test_auth/test_router.py +++ b/tests/test_api/test_auth/test_router.py @@ -17,7 +17,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload -from application.entities import CatalogueSetting, Directory, Group, NetworkPolicy, Role +from domain.entities import CatalogueSetting, Directory, Group, NetworkPolicy, Role from enums import AceType, MFAChallengeStatuses, MFAFlags, RoleScope from application.auth.utils import authenticate_user from application.kerberos import AbstractKadmin diff --git a/tests/test_api/test_auth/test_router_mfa.py b/tests/test_api/test_auth/test_router_mfa.py index a17c8fa83..ca2ce4062 100644 --- a/tests/test_api/test_auth/test_router_mfa.py +++ b/tests/test_api/test_auth/test_router_mfa.py @@ -9,7 +9,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import CatalogueSetting +from domain.entities import CatalogueSetting @pytest.mark.asyncio diff --git a/tests/test_api/test_main/conftest.py b/tests/test_api/test_main/conftest.py index 4ab9606ab..921adca22 100644 --- a/tests/test_api/test_main/conftest.py +++ b/tests/test_api/test_main/conftest.py @@ -9,7 +9,7 @@ from httpx import ASGITransport, AsyncClient from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import CatalogueSetting +from domain.entities import CatalogueSetting from application.dns import ( DNS_MANAGER_IP_ADDRESS_NAME, DNS_MANAGER_STATE_NAME, diff --git a/tests/test_api/test_network/test_router.py b/tests/test_api/test_network/test_router.py index 8d94edcc8..a8945acd7 100644 --- a/tests/test_api/test_network/test_router.py +++ b/tests/test_api/test_network/test_router.py @@ -12,7 +12,7 @@ from httpx import AsyncClient from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import NetworkPolicy +from domain.entities import NetworkPolicy @pytest.mark.asyncio diff --git a/tests/test_api/test_shadow/conftest.py b/tests/test_api/test_shadow/conftest.py index 957486f2e..17e9ef67b 100644 --- a/tests/test_api/test_shadow/conftest.py +++ b/tests/test_api/test_shadow/conftest.py @@ -10,7 +10,7 @@ from pydantic import BaseModel from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import CatalogueSetting +from domain.entities import CatalogueSetting from application.ldap_codes import LDAPCodes diff --git a/tests/test_api/test_shadow/test_router.py b/tests/test_api/test_shadow/test_router.py index 713d21707..80f7b6ffe 100644 --- a/tests/test_api/test_shadow/test_router.py +++ b/tests/test_api/test_shadow/test_router.py @@ -10,7 +10,7 @@ from sqlalchemy import delete, update from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import NetworkPolicy +from domain.entities import NetworkPolicy from enums import MFAFlags from .conftest import ProxyRequestModel diff --git a/tests/test_ldap/policies/test_network/test_pool_client_handler.py b/tests/test_ldap/policies/test_network/test_pool_client_handler.py index 962be390e..a28df97bb 100644 --- a/tests/test_ldap/policies/test_network/test_pool_client_handler.py +++ b/tests/test_ldap/policies/test_network/test_pool_client_handler.py @@ -9,7 +9,7 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import NetworkPolicy +from domain.entities import NetworkPolicy from enums import ProtocolType from application.policies.network import NetworkPolicyValidatorUseCase from application.utils.queries import get_group, get_user diff --git a/tests/test_ldap/test_access_manager/conftest.py b/tests/test_ldap/test_access_manager/conftest.py index ae4b1968d..596fef8cc 100644 --- a/tests/test_ldap/test_access_manager/conftest.py +++ b/tests/test_ldap/test_access_manager/conftest.py @@ -6,7 +6,7 @@ from unittest.mock import Mock -from application.entities import AccessControlEntry +from domain.entities import AccessControlEntry from enums import AceType diff --git a/tests/test_ldap/test_access_manager/test_entity_level_access.py b/tests/test_ldap/test_access_manager/test_entity_level_access.py index 0a2d5b29e..0475410c1 100644 --- a/tests/test_ldap/test_access_manager/test_entity_level_access.py +++ b/tests/test_ldap/test_access_manager/test_entity_level_access.py @@ -6,7 +6,7 @@ import pytest -from application.entities import AccessControlEntry +from domain.entities import AccessControlEntry from application.roles.access_manager import AccessManager from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_access_manager/test_modify_access.py b/tests/test_ldap/test_access_manager/test_modify_access.py index 6c5e93b99..6624754e4 100644 --- a/tests/test_ldap/test_access_manager/test_modify_access.py +++ b/tests/test_ldap/test_access_manager/test_modify_access.py @@ -6,7 +6,7 @@ import pytest -from application.entities import AccessControlEntry +from domain.entities import AccessControlEntry from enums import AceType from application.ldap_responses import PartialAttribute from application.objects import Changes, Operation diff --git a/tests/test_ldap/test_access_manager/test_search_access.py b/tests/test_ldap/test_access_manager/test_search_access.py index 62269278f..5f4af7706 100644 --- a/tests/test_ldap/test_access_manager/test_search_access.py +++ b/tests/test_ldap/test_access_manager/test_search_access.py @@ -6,7 +6,7 @@ import pytest -from application.entities import AccessControlEntry +from domain.entities import AccessControlEntry from application.roles.access_manager import AccessManager from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_bind.py b/tests/test_ldap/test_bind.py index bebcc1044..d4c630ddb 100644 --- a/tests/test_ldap/test_bind.py +++ b/tests/test_ldap/test_bind.py @@ -13,7 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from application.entities import Attribute, Directory, User +from domain.entities import Attribute, Directory, User from application.dependency import resolve_deps from application.dialogue import LDAPSession from application.ldap_requests.bind import ( diff --git a/tests/test_ldap/test_container_restrictions/conftest.py b/tests/test_ldap/test_container_restrictions/conftest.py index 337b7d1f2..54033abad 100644 --- a/tests/test_ldap/test_container_restrictions/conftest.py +++ b/tests/test_ldap/test_container_restrictions/conftest.py @@ -8,7 +8,7 @@ import pytest_asyncio -from application.entities import AccessControlEntry +from domain.entities import AccessControlEntry from application.dialogue import UserSchema diff --git a/tests/test_ldap/test_ldap3_definition_parse.py b/tests/test_ldap/test_ldap3_definition_parse.py index 3ba90556b..24ae75668 100644 --- a/tests/test_ldap/test_ldap3_definition_parse.py +++ b/tests/test_ldap/test_ldap3_definition_parse.py @@ -7,7 +7,7 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession -from application.entities import AttributeType, ObjectClass +from domain.entities import AttributeType, ObjectClass from application.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) diff --git a/tests/test_ldap/test_roles/test_multiple_access.py b/tests/test_ldap/test_roles/test_multiple_access.py index 8abac0e0e..6891ce34a 100644 --- a/tests/test_ldap/test_roles/test_multiple_access.py +++ b/tests/test_ldap/test_roles/test_multiple_access.py @@ -12,7 +12,7 @@ from sqlalchemy.orm import joinedload, subqueryload from config import Settings -from application.entities import Directory +from domain.entities import Directory from enums import AceType, EntityTypeNames, RoleScope from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.entity_type_dao import EntityTypeDAO diff --git a/tests/test_ldap/test_util/test_add.py b/tests/test_ldap/test_util/test_add.py index 8e7c49c29..24225f5bf 100644 --- a/tests/test_ldap/test_util/test_add.py +++ b/tests/test_ldap/test_util/test_add.py @@ -14,7 +14,7 @@ from sqlalchemy.orm import selectinload, subqueryload from config import Settings -from application.entities import Directory, Group, User +from domain.entities import Directory, Group, User from enums import AceType, RoleScope from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes diff --git a/tests/test_ldap/test_util/test_delete.py b/tests/test_ldap/test_util/test_delete.py index f45761191..bd990cd29 100644 --- a/tests/test_ldap/test_util/test_delete.py +++ b/tests/test_ldap/test_util/test_delete.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from config import Settings -from application.entities import Directory +from domain.entities import Directory from enums import AceType, RoleScope from application.ldap_codes import LDAPCodes from application.roles.ace_dao import AccessControlEntryDAO diff --git a/tests/test_ldap/test_util/test_modify.py b/tests/test_ldap/test_util/test_modify.py index d6248b39e..cb90e087c 100644 --- a/tests/test_ldap/test_util/test_modify.py +++ b/tests/test_ldap/test_util/test_modify.py @@ -17,7 +17,7 @@ from sqlalchemy.orm import joinedload, selectinload, subqueryload from config import Settings -from application.entities import Directory, Group +from domain.entities import Directory, Group from enums import AceType, RoleScope from application.kerberos.base import AbstractKadmin from application.ldap_codes import LDAPCodes diff --git a/tests/test_ldap/test_util/test_search.py b/tests/test_ldap/test_util/test_search.py index c85c9467b..d59755610 100644 --- a/tests/test_ldap/test_util/test_search.py +++ b/tests/test_ldap/test_util/test_search.py @@ -13,7 +13,7 @@ from sqlalchemy.orm import selectinload from config import Settings -from application.entities import User +from domain.entities import User from enums import AceType, ProtocolType, RoleScope from application.asn1parser import ASN1Row, TagNumbers from application.dialogue import LDAPSession From 6809fa1301146dd958078bbce6f515d2adebaa68 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:43:50 +0300 Subject: [PATCH 07/27] refactor: update import paths from application.entities to domain.entities in migration scripts --- src/alembic/versions/01f3f05a5b11_add_primary_group_id.py | 2 +- src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py index 4ad08ba62..ff33b5963 100644 --- a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py +++ b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py @@ -15,7 +15,7 @@ from sqlalchemy.orm import Session, selectinload from constants import DOMAIN_COMPUTERS_GROUP_NAME -from application.entities import Attribute, Directory, EntityType, Group +from domain.entities import Attribute, Directory, EntityType, Group from enums import EntityTypeNames from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_value_validator import ( diff --git a/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py b/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py index 89ed162e6..271a07a75 100644 --- a/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py +++ b/src/alembic/versions/16a9fa2c1f1e_rename_readonly_group.py @@ -14,7 +14,7 @@ from sqlalchemy.orm import Session, selectinload from constants import READ_ONLY_GROUP_NAME -from application.entities import Attribute, Directory +from domain.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa From 72049fccd595dd380881a63bdbe674c277d96116 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:47:13 +0300 Subject: [PATCH 08/27] refactor: rename AbstractDAO to AbstractDBGateWay across multiple DAO classes --- src/abstract_dao.py | 2 +- src/application/ldap_schema/attribute_type_dao.py | 4 ++-- src/application/ldap_schema/entity_type_dao.py | 4 ++-- src/application/ldap_schema/object_class_dao.py | 4 ++-- src/application/policies/audit/destination_dao.py | 4 ++-- src/application/policies/audit/policies_dao.py | 4 ++-- src/application/policies/password/dao.py | 4 ++-- src/application/roles/ace_dao.py | 4 ++-- src/application/roles/role_dao.py | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/abstract_dao.py b/src/abstract_dao.py index 793557b4e..ec4226c75 100644 --- a/src/abstract_dao.py +++ b/src/abstract_dao.py @@ -11,7 +11,7 @@ _A = TypeVar("_A", int, str, contravariant=True) -class AbstractDAO(Protocol[_T, _A]): +class AbstractDBGateWay(Protocol[_T, _A]): """Abstract Data Access Object (DAO) interface.""" @abstractmethod diff --git a/src/application/ldap_schema/attribute_type_dao.py b/src/application/ldap_schema/attribute_type_dao.py index 12d64608e..808d53434 100644 --- a/src/application/ldap_schema/attribute_type_dao.py +++ b/src/application/ldap_schema/attribute_type_dao.py @@ -14,7 +14,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import AttributeType from application.ldap_schema.dto import AttributeTypeDTO from application.ldap_schema.exceptions import ( @@ -47,7 +47,7 @@ ) -class AttributeTypeDAO(AbstractDAO[AttributeTypeDTO, str]): +class AttributeTypeDAO(AbstractDBGateWay[AttributeTypeDTO, str]): """Attribute Type DAO.""" __session: AsyncSession diff --git a/src/application/ldap_schema/entity_type_dao.py b/src/application/ldap_schema/entity_type_dao.py index 98e9ba995..f1fbe9328 100644 --- a/src/application/ldap_schema/entity_type_dao.py +++ b/src/application/ldap_schema/entity_type_dao.py @@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import Attribute, Directory, EntityType, ObjectClass from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, @@ -43,7 +43,7 @@ ) -class EntityTypeDAO(AbstractDAO[EntityTypeDTO, str]): +class EntityTypeDAO(AbstractDBGateWay[EntityTypeDTO, str]): """Entity Type DAO.""" __session: AsyncSession diff --git a/src/application/ldap_schema/object_class_dao.py b/src/application/ldap_schema/object_class_dao.py index 6de71bbd3..e8c92af1b 100644 --- a/src/application/ldap_schema/object_class_dao.py +++ b/src/application/ldap_schema/object_class_dao.py @@ -17,7 +17,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import AttributeType, EntityType, ObjectClass from application.utils.pagination import ( PaginationParams, @@ -45,7 +45,7 @@ ) -class ObjectClassDAO(AbstractDAO[ObjectClassDTO, str]): +class ObjectClassDAO(AbstractDBGateWay[ObjectClassDTO, str]): """Object Class DAO.""" def __init__(self, session: AsyncSession) -> None: diff --git a/src/application/policies/audit/destination_dao.py b/src/application/policies/audit/destination_dao.py index a7cfd4d89..3436b8115 100644 --- a/src/application/policies/audit/destination_dao.py +++ b/src/application/policies/audit/destination_dao.py @@ -10,7 +10,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import AuditDestination from .dataclasses import AuditDestinationDTO @@ -19,7 +19,7 @@ _convert = get_converter(AuditDestination, AuditDestinationDTO) -class AuditDestinationDAO(AbstractDAO[AuditDestinationDTO, int]): +class AuditDestinationDAO(AbstractDBGateWay[AuditDestinationDTO, int]): """Audit destination DAO class.""" def __init__(self, session: AsyncSession): diff --git a/src/application/policies/audit/policies_dao.py b/src/application/policies/audit/policies_dao.py index b613c42e5..e4a3ab23d 100644 --- a/src/application/policies/audit/policies_dao.py +++ b/src/application/policies/audit/policies_dao.py @@ -10,7 +10,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import AuditPolicy, AuditPolicyTrigger from .dataclasses import AuditPolicyDTO, AuditPolicySetupDTO @@ -19,7 +19,7 @@ _convert = get_converter(AuditPolicy, AuditPolicyDTO) -class AuditPoliciesDAO(AbstractDAO[AuditPolicyDTO, int]): +class AuditPoliciesDAO(AbstractDBGateWay[AuditPolicyDTO, int]): """Audit DAO for managing audit policies.""" def __init__(self, session: AsyncSession) -> None: diff --git a/src/application/policies/password/dao.py b/src/application/policies/password/dao.py index d612be719..87fed1eac 100644 --- a/src/application/policies/password/dao.py +++ b/src/application/policies/password/dao.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import attributes, selectinload -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import Attribute, Group, PasswordPolicy, User from enums import EntityTypeNames from application.ldap_schema.attribute_value_validator import ( @@ -64,7 +64,7 @@ def _make_group_paths(password_policy: PasswordPolicy) -> list[str]: ) -class PasswordPolicyDAO(AbstractDAO[PasswordPolicyDTO, int]): +class PasswordPolicyDAO(AbstractDBGateWay[PasswordPolicyDTO, int]): """Password Policy DAO.""" _session: AsyncSession diff --git a/src/application/roles/ace_dao.py b/src/application/roles/ace_dao.py index f7d564eb4..4b0f51f98 100644 --- a/src/application/roles/ace_dao.py +++ b/src/application/roles/ace_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import AccessControlEntry, Directory from enums import AceType, RoleScope from application.utils.helpers import get_depth_by_dn @@ -48,7 +48,7 @@ ) -class AccessControlEntryDAO(AbstractDAO[AccessControlEntryDTO, int]): +class AccessControlEntryDAO(AbstractDBGateWay[AccessControlEntryDTO, int]): """Access control entry DAO.""" _session: AsyncSession diff --git a/src/application/roles/role_dao.py b/src/application/roles/role_dao.py index d84d8a4c5..2fe2b75d4 100644 --- a/src/application/roles/role_dao.py +++ b/src/application/roles/role_dao.py @@ -10,7 +10,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload -from abstract_dao import AbstractDAO +from abstract_dao import AbstractDBGateWay from domain.entities import AccessControlEntry, Group, Role from enums import AuthorizationRules, RoleConstants from application.utils.queries import get_groups @@ -53,7 +53,7 @@ def make_aces(role: Role) -> list[AccessControlEntryDTO]: _convert_without_aces = retort_without_ace.get_converter(Role, RoleDTO) -class RoleDAO(AbstractDAO[RoleDTO, int]): +class RoleDAO(AbstractDBGateWay[RoleDTO, int]): """Role DAO.""" _session: AsyncSession From 0b7cbf0b4397db3801ba83ef4cab90582a0542ac Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:49:05 +0300 Subject: [PATCH 09/27] refactor: rename AbstractDAO to AbstractDBGateWay and update import paths across multiple modules --- src/{abstract_dao.py => abstract_db_gateway.py} | 0 src/application/ldap_schema/entity_type_dao.py | 2 +- src/application/ldap_schema/object_class_dao.py | 2 +- src/application/policies/audit/destination_dao.py | 2 +- src/application/policies/audit/policies_dao.py | 2 +- src/application/policies/password/dao.py | 2 +- src/application/roles/ace_dao.py | 2 +- src/application/roles/role_dao.py | 2 +- 8 files changed, 7 insertions(+), 7 deletions(-) rename src/{abstract_dao.py => abstract_db_gateway.py} (100%) diff --git a/src/abstract_dao.py b/src/abstract_db_gateway.py similarity index 100% rename from src/abstract_dao.py rename to src/abstract_db_gateway.py diff --git a/src/application/ldap_schema/entity_type_dao.py b/src/application/ldap_schema/entity_type_dao.py index f1fbe9328..25821f48c 100644 --- a/src/application/ldap_schema/entity_type_dao.py +++ b/src/application/ldap_schema/entity_type_dao.py @@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import Attribute, Directory, EntityType, ObjectClass from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, diff --git a/src/application/ldap_schema/object_class_dao.py b/src/application/ldap_schema/object_class_dao.py index e8c92af1b..ea9d58a9b 100644 --- a/src/application/ldap_schema/object_class_dao.py +++ b/src/application/ldap_schema/object_class_dao.py @@ -17,7 +17,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import AttributeType, EntityType, ObjectClass from application.utils.pagination import ( PaginationParams, diff --git a/src/application/policies/audit/destination_dao.py b/src/application/policies/audit/destination_dao.py index 3436b8115..d81c2ee8b 100644 --- a/src/application/policies/audit/destination_dao.py +++ b/src/application/policies/audit/destination_dao.py @@ -10,7 +10,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import AuditDestination from .dataclasses import AuditDestinationDTO diff --git a/src/application/policies/audit/policies_dao.py b/src/application/policies/audit/policies_dao.py index e4a3ab23d..ad0001ea8 100644 --- a/src/application/policies/audit/policies_dao.py +++ b/src/application/policies/audit/policies_dao.py @@ -10,7 +10,7 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import AuditPolicy, AuditPolicyTrigger from .dataclasses import AuditPolicyDTO, AuditPolicySetupDTO diff --git a/src/application/policies/password/dao.py b/src/application/policies/password/dao.py index 87fed1eac..96d3b8837 100644 --- a/src/application/policies/password/dao.py +++ b/src/application/policies/password/dao.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import attributes, selectinload -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import Attribute, Group, PasswordPolicy, User from enums import EntityTypeNames from application.ldap_schema.attribute_value_validator import ( diff --git a/src/application/roles/ace_dao.py b/src/application/roles/ace_dao.py index 4b0f51f98..839389913 100644 --- a/src/application/roles/ace_dao.py +++ b/src/application/roles/ace_dao.py @@ -11,7 +11,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import AccessControlEntry, Directory from enums import AceType, RoleScope from application.utils.helpers import get_depth_by_dn diff --git a/src/application/roles/role_dao.py b/src/application/roles/role_dao.py index 2fe2b75d4..d70084e9a 100644 --- a/src/application/roles/role_dao.py +++ b/src/application/roles/role_dao.py @@ -10,7 +10,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import AccessControlEntry, Group, Role from enums import AuthorizationRules, RoleConstants from application.utils.queries import get_groups From c20740768ad611c2a3c9d445a09f1ad93dc9c819 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:49:14 +0300 Subject: [PATCH 10/27] refactor: update import path for AbstractDBGateWay in attribute_type_dao.py --- src/application/ldap_schema/attribute_type_dao.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/application/ldap_schema/attribute_type_dao.py b/src/application/ldap_schema/attribute_type_dao.py index 808d53434..5cb4e0a97 100644 --- a/src/application/ldap_schema/attribute_type_dao.py +++ b/src/application/ldap_schema/attribute_type_dao.py @@ -14,7 +14,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession -from abstract_dao import AbstractDBGateWay +from abstract_db_gateway import AbstractDBGateWay from domain.entities import AttributeType from application.ldap_schema.dto import AttributeTypeDTO from application.ldap_schema.exceptions import ( From d6f08e0c6954c0b000fe64635c9480a07cad9f80 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Sat, 7 Feb 2026 00:56:11 +0300 Subject: [PATCH 11/27] feat: adding __init__.py files to the user and user/use_cases directories --- src/application/user/__init__.py | 0 src/application/user/use_cases/__init__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/application/user/__init__.py create mode 100644 src/application/user/use_cases/__init__.py diff --git a/src/application/user/__init__.py b/src/application/user/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/application/user/use_cases/__init__.py b/src/application/user/use_cases/__init__.py new file mode 100644 index 000000000..e69de29bb From 729694004ee31bd347354a51005f6d06cf09a98d Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Mon, 9 Feb 2026 20:19:01 +0300 Subject: [PATCH 12/27] refactor: removing obsolete network policy validator classes and files --- src/application/policies/network/gateway.py | 136 ------------- .../policies/network/validator_gateway.py | 178 ------------------ .../policies/network/validator_protocol.py | 72 ------- 3 files changed, 386 deletions(-) delete mode 100644 src/application/policies/network/gateway.py delete mode 100644 src/application/policies/network/validator_gateway.py delete mode 100644 src/application/policies/network/validator_protocol.py diff --git a/src/application/policies/network/gateway.py b/src/application/policies/network/gateway.py deleted file mode 100644 index 1157abb3d..000000000 --- a/src/application/policies/network/gateway.py +++ /dev/null @@ -1,136 +0,0 @@ -"""Network policies gateway. - -Copyright (c) 2025 MultiFactor -License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE -""" - -from sqlalchemy import delete, exists, func, select, update -from sqlalchemy.exc import IntegrityError -from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import selectinload - -from domain.entities import Group, NetworkPolicy -from application.policies.network.exceptions import ( - NetworkPolicyAlreadyExistsError, - NetworkPolicyNotFoundError, -) -from application.utils.queries import get_groups -from infrastructure.pg.tables import queryable_attr as qa - - -class NetworkPolicyGateway: - """Network policy gateway.""" - - def __init__(self, session: AsyncSession): - """Initialize Network policy gateway.""" - self._session = session - - async def get(self, _id: int) -> NetworkPolicy: - """Get network policy.""" - policy = await self._session.scalar( - select(NetworkPolicy) - .filter_by(id=_id) - .options( - selectinload(qa(NetworkPolicy.groups)).selectinload( - qa(Group.directory), - ), - selectinload(qa(NetworkPolicy.mfa_groups)).selectinload( - qa(Group.directory), - ), - ), - ) - if not policy: - raise NetworkPolicyNotFoundError( - f"Policy with id {_id} not found.", - ) - return policy - - async def create( - self, - policy: NetworkPolicy, - ) -> NetworkPolicy: - """Get network policy.""" - try: - self._session.add(policy) - await self._session.flush() - await self._session.refresh(policy) - return policy - except IntegrityError: - raise NetworkPolicyAlreadyExistsError("Entry already exists") - - async def get_groups(self, groups: list[str]) -> list[Group]: - return await get_groups(groups, self._session) - - async def get_list_policies(self) -> list[NetworkPolicy]: - result = await self._session.scalars( - select(NetworkPolicy) - .options( - selectinload(qa(NetworkPolicy.groups)).selectinload( - qa(Group.directory), - ), - selectinload(qa(NetworkPolicy.mfa_groups)).selectinload( - qa(Group.directory), - ), - ) - .order_by(qa(NetworkPolicy.priority).asc()), - ) - return list(result) - - async def get_with_for_update(self, _id: int) -> NetworkPolicy: - policy = await self._session.scalar( - select(NetworkPolicy) - .filter_by(id=_id) - .with_for_update() - .options( - selectinload(qa(NetworkPolicy.groups)).selectinload( - qa(Group.directory), - ), - selectinload(qa(NetworkPolicy.mfa_groups)).selectinload( - qa(Group.directory), - ), - ), - ) - if not policy: - raise NetworkPolicyNotFoundError( - f"Policy with id {_id} not found.", - ) - return policy - - async def delete(self, _id: int) -> None: - await self._session.execute( - delete(NetworkPolicy) - .filter_by(id=_id), - ) # fmt: skip - await self._session.flush() - - async def get_policy_count(self) -> int: - count = await self._session.scalars( - select(func.count()) - .select_from(NetworkPolicy) - .filter_by(enabled=True), - ) - return count.one() - - async def update_priority(self, priority: int) -> None: - await self._session.execute( - update(NetworkPolicy) - .values({"priority": NetworkPolicy.priority - 1}) - .filter(qa(NetworkPolicy.priority) > priority), - ) - - async def disable_policy(self, _id: int) -> None: - await self._session.execute( - update(NetworkPolicy).filter_by(id=_id).values(enabled=False), - ) - - async def check_policy_exists(self, policy: NetworkPolicy) -> bool: - result = await self._session.scalars( - select( - exists(NetworkPolicy).where( - qa(NetworkPolicy.name) == policy.name, - qa(NetworkPolicy.netmasks) == policy.netmasks, - qa(NetworkPolicy.id) != policy.id, - ), - ), - ) - return result.one() diff --git a/src/application/policies/network/validator_gateway.py b/src/application/policies/network/validator_gateway.py deleted file mode 100644 index 079876e83..000000000 --- a/src/application/policies/network/validator_gateway.py +++ /dev/null @@ -1,178 +0,0 @@ -"""Network policy validator gateway. - -Copyright (c) 2025 MultiFactor -License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE -""" - -from ipaddress import IPv4Address, IPv6Address - -from sqlalchemy import exists, or_, select, text -from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import selectinload -from sqlalchemy.sql.expression import Select, true - -from domain.entities import Group, NetworkPolicy, User -from enums import ProtocolType -from infrastructure.pg.tables import queryable_attr as qa - - -class NetworkPolicyValidatorGateway: - """Gateway for validating network policies.""" - - def __init__( - self, - session: AsyncSession, - ): - """Initialize validator gateway.""" - self._session = session - - def _build_base_query( - self, - ip: IPv4Address | IPv6Address, - protocol_type: ProtocolType, - ) -> Select: - """Build a base query for network policies. - - :param IPv4Address | IPv6Address ip: IP address to filter - :param ProtocolType protocol_type: Protocol to filter - :param list[int] | None user_group_ids: - List of user group IDs, optional - :return: Select query - """ - protocol_field = getattr(NetworkPolicy, protocol_type) - query = ( - select(NetworkPolicy) - .options( - selectinload(qa(NetworkPolicy.groups)), - selectinload(qa(NetworkPolicy.mfa_groups)), - ) - .filter( - qa(NetworkPolicy.enabled).is_(True), - text(':ip <<= ANY("Policies".netmasks)').bindparams(ip=ip), - protocol_field == true(), - ) - .order_by(qa(NetworkPolicy.priority).asc()) - .limit(1) - ) - - return query - - async def get_by_protocol( - self, - ip: IPv4Address | IPv6Address, - protocol_type: ProtocolType, - ) -> NetworkPolicy | None: - """Get network policy by protocol.""" - query = self._build_base_query(ip, protocol_type) - return await self._session.scalar(query) - - async def get_user_network_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - policy_type: ProtocolType, - ) -> NetworkPolicy | None: - """Get the highest priority network policy for user, ip and protocol. - - :param User user: user object - :return NetworkPolicy | None: a NetworkPolicy object - """ - user_group_ids = [group.id for group in user.groups] - - query = self._build_base_query(ip, policy_type) - - if user_group_ids is not None: - query = query.filter( - or_( - qa(NetworkPolicy.groups) == None, # noqa - qa(NetworkPolicy.groups).any( - qa(Group.id).in_(user_group_ids), - ), - ), - ) - - return await self._session.scalar(query) - - async def get_user_http_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - ) -> NetworkPolicy | None: - """Get user HTTP policy.""" - return await self.get_user_network_policy( - ip, - user, - ProtocolType.HTTP, - ) - - async def get_user_kerberos_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - ) -> NetworkPolicy | None: - """Get user Kerberos policy.""" - return await self.get_user_network_policy( - ip, - user, - ProtocolType.KERBEROS, - ) - - async def get_user_ldap_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - ) -> NetworkPolicy | None: - """Get user LDAP policy.""" - return await self.get_user_network_policy( - ip, - user, - ProtocolType.LDAP, - ) - - async def is_user_group_valid( - self, - user: User | None, - policy: NetworkPolicy | None, - ) -> bool: - """Validate user groups, is it including to policy. - - :param User user: db user - :param NetworkPolicy policy: db policy - :return bool: status - """ - if not (user and policy): - return False - - if not policy.groups: - return True - query = select( - select(Group) - .join(qa(Group.users)) - .join(qa(Group.policies), isouter=True) - .exists() - .where(qa(Group.users).contains(user)) - .where(qa(Group.policies).contains(policy)), - ) - group = await self._session.scalar(query) - - return bool(group) - - async def check_mfa_group( - self, - policy: NetworkPolicy, - user: User, - ) -> bool: - """Check if user is in a group with MFA policy. - - :param NetworkPolicy policy: policy object - :param User user: user object - :return bool: status - """ - return await self._session.scalar( - select( - exists().where( # type: ignore - qa(Group.mfa_policies).contains(policy), - qa(Group.users).contains(user), - ), - ), - ) diff --git a/src/application/policies/network/validator_protocol.py b/src/application/policies/network/validator_protocol.py deleted file mode 100644 index 85e4bcd7d..000000000 --- a/src/application/policies/network/validator_protocol.py +++ /dev/null @@ -1,72 +0,0 @@ -"""Network policy validator protocol. - -Copyright (c) 2025 MultiFactor -License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE -""" - -from ipaddress import IPv4Address, IPv6Address -from typing import Protocol - -from domain.entities import NetworkPolicy, User -from enums import ProtocolType - - -class NetworkPolicyValidatorProtocol(Protocol): - """Protocol for validating network policies.""" - - async def get_user_http_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - ) -> NetworkPolicy | None: - """Get user HTTP policy.""" - ... - - async def get_user_kerberos_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - ) -> NetworkPolicy | None: - """Get user Kerberos policy.""" - ... - - async def get_user_ldap_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - ) -> NetworkPolicy | None: - """Get user LDAP policy.""" - ... - - async def check_mfa_group( - self, - policy: NetworkPolicy, - user: User, - ) -> bool: - """Check if user is in a group with MFA policy.""" - ... - - async def is_user_group_valid( - self, - user: User | None, - policy: NetworkPolicy | None, - ) -> bool: - """Validate user groups, is it including to policy.""" - ... - - async def get_user_network_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - policy_type: ProtocolType, - ) -> NetworkPolicy | None: - """Get the highest priority network policy.""" - ... - - async def get_by_protocol( - self, - ip: IPv4Address | IPv6Address, - protocol_type: ProtocolType, - ) -> NetworkPolicy | None: - """Get network policy by protocol.""" - ... From 5b4533923cd312d17d3a07243d956cea1a5cc247 Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Mon, 9 Feb 2026 20:19:11 +0300 Subject: [PATCH 13/27] refactor: update network policy use case to use gateway protocol and remove obsolete validator methods --- src/application/policies/network/use_cases.py | 142 +++++++++--------- 1 file changed, 67 insertions(+), 75 deletions(-) diff --git a/src/application/policies/network/use_cases.py b/src/application/policies/network/use_cases.py index 0d38497c9..b525ed840 100644 --- a/src/application/policies/network/use_cases.py +++ b/src/application/policies/network/use_cases.py @@ -23,10 +23,8 @@ LastActivePolicyError, NetworkPolicyAlreadyExistsError, ) -from application.policies.network.gateway import NetworkPolicyGateway -from application.policies.network.validator_protocol import ( - NetworkPolicyValidatorProtocol, -) +from application.dialogue import LDAPSession +from .gateway_protocol import NetworkPolicyGatewayProtocol def _convert_groups(policy: NetworkPolicy) -> list[str]: @@ -65,11 +63,11 @@ class NetworkPolicyUseCase(AbstractService): def __init__( self, - network_policy_gateway: NetworkPolicyGateway, + network_policy_gateway: NetworkPolicyGatewayProtocol, session: AsyncSession, ): """Initialize Network policies use cases.""" - self._network_policy_gateway = network_policy_gateway + self.gateway = network_policy_gateway self._session = session async def create( @@ -80,18 +78,16 @@ async def create( policy_model = _convert_dto_to_model(dto) if dto.groups: policy_model.groups = ( - await self._network_policy_gateway.get_groups(dto.groups) + await self.gateway.get_groups(dto.groups) ) if dto.mfa_groups: policy_model.mfa_groups = ( - await self._network_policy_gateway.get_groups( + await self.gateway.get_groups( dto.mfa_groups, ) ) - policy = await self._network_policy_gateway.create( - policy_model, - ) + policy = await self.gateway.create(policy_model) return NetworkPolicyDTO[int]( id=policy.id, name=policy.name, @@ -110,14 +106,14 @@ async def create( ) async def get(self, _id: int) -> NetworkPolicyDTO[int]: - policy = await self._network_policy_gateway.get_with_for_update(_id) + policy = await self.gateway.get_with_for_update(_id) return _convert_model_to_dto(policy) async def get_list_policies( self, ) -> list[NetworkPolicyDTO]: """Get list of network policies.""" - policies = await self._network_policy_gateway.get_list_policies() + policies = await self.gateway.get_list_policies() return list(map(_convert_model_to_dto, policies)) async def delete(self, _id: int) -> None: @@ -125,20 +121,20 @@ async def delete(self, _id: int) -> None: policy = await self.get(_id) await self.validate_policy_count() - await self._network_policy_gateway.delete(_id) - await self._network_policy_gateway.update_priority(policy.priority) + await self.gateway.delete(_id) + await self.gateway.update_priority(policy.priority) async def switch_network_policy(self, _id: int) -> None: """Switch network policy.""" policy = await self.get(_id) if policy.enabled: await self.validate_policy_count() - await self._network_policy_gateway.disable_policy(_id) + await self.gateway.disable_policy(_id) await self._session.commit() async def validate_policy_count(self) -> None: """Validate policy count.""" - count = await self._network_policy_gateway.get_policy_count() + count = await self.gateway.get_policy_count() if count == 1: raise LastActivePolicyError("At least one policy should be active") @@ -147,13 +143,13 @@ async def update( dto: NetworkPolicyUpdateDTO, ) -> NetworkPolicyDTO: """Update network policy.""" - policy = await self._network_policy_gateway.get_with_for_update(dto.id) + policy = await self.gateway.get_with_for_update(dto.id) await self._apply_field_updates(policy, dto) await self._apply_netmask_updates(policy, dto) await self._apply_group_updates(policy, dto) - if await self._network_policy_gateway.check_policy_exists(policy): + if await self.gateway.check_policy_exists(policy): raise NetworkPolicyAlreadyExistsError("Entry already exists") await self._session.commit() @@ -189,22 +185,22 @@ async def _apply_group_updates( """Apply group updates.""" if dto.groups is not None: policy.groups = ( - await self._network_policy_gateway.get_groups(dto.groups) + await self.gateway.get_groups(dto.groups) if dto.groups else [] ) if dto.mfa_groups is not None: policy.mfa_groups = ( - await self._network_policy_gateway.get_groups(dto.mfa_groups) + await self.gateway.get_groups(dto.mfa_groups) if dto.mfa_groups else [] ) async def swap_priorities(self, id1: int, id2: int) -> SwapPrioritiesDTO: """Swap priorities for network policies.""" - policy1 = await self._network_policy_gateway.get(id1) - policy2 = await self._network_policy_gateway.get(id2) + policy1 = await self.gateway.get(id1) + policy2 = await self.gateway.get(id2) policy1.priority, policy2.priority = policy2.priority, policy1.priority await self._session.commit() return SwapPrioritiesDTO( @@ -225,36 +221,13 @@ async def swap_priorities(self, id1: int, id2: int) -> SwapPrioritiesDTO: class NetworkPolicyValidatorUseCase(AbstractService): """Network policies validator use cases.""" + _gateway: NetworkPolicyGatewayProtocol def __init__( self, - network_policy_validator_gateway: NetworkPolicyValidatorProtocol, + network_policy_gateway: NetworkPolicyGatewayProtocol, ): """Initialize Network policies validator use cases.""" - self._gateway = network_policy_validator_gateway - - async def get_by_protocol( - self, - ip: IPv4Address | IPv6Address, - protocol_type: ProtocolType, - ) -> NetworkPolicy | None: - """Get network policy by protocol.""" - return await self._gateway.get_by_protocol( - ip, - protocol_type, - ) - - async def get_user_network_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - policy_type: ProtocolType, - ) -> NetworkPolicy | None: - """Get user network policy.""" - return await self._gateway.get_user_network_policy( - ip, - user, - policy_type, - ) + self._gateway = network_policy_gateway async def get_user_http_policy( self, @@ -278,28 +251,6 @@ async def get_user_kerberos_policy( user, ) - async def get_user_ldap_policy( - self, - ip: IPv4Address | IPv6Address, - user: User, - ) -> NetworkPolicy | None: - """Get user LDAP policy.""" - return await self._gateway.get_user_ldap_policy( - ip, - user, - ) - - async def is_user_group_valid( - self, - user: User | None, - policy: NetworkPolicy | None, - ) -> bool: - """Validate user groups, is it including to policy.""" - return await self._gateway.is_user_group_valid( - user, - policy, - ) - async def check_mfa_group( self, policy: NetworkPolicy, @@ -312,11 +263,52 @@ async def check_mfa_group( ) PERMISSIONS: ClassVar[dict[str, AuthorizationRules]] = { - get_by_protocol.__name__: AuthorizationRules.NETWORK_POLICY_VALIDATOR_GET_BY_PROTOCOL, # noqa: E501 - get_user_network_policy.__name__: AuthorizationRules.NETWORK_POLICY_VALIDATOR_GET_USER_NETWORK_POLICY, # noqa: E501 get_user_http_policy.__name__: AuthorizationRules.NETWORK_POLICY_VALIDATOR_GET_USER_HTTP_POLICY, # noqa: E501 get_user_kerberos_policy.__name__: AuthorizationRules.NETWORK_POLICY_VALIDATOR_GET_USER_KERBEROS_POLICY, # noqa: E501 - get_user_ldap_policy.__name__: AuthorizationRules.NETWORK_POLICY_VALIDATOR_GET_USER_LDAP_POLICY, # noqa: E501 - is_user_group_valid.__name__: AuthorizationRules.NETWORK_POLICY_VALIDATOR_IS_USER_GROUP_VALID, # noqa: E501 check_mfa_group.__name__: AuthorizationRules.NETWORK_POLICY_VALIDATOR_CHECK_MFA_GROUP, # noqa: E501 } + + +class ValidatePolicyAccessUseCase: + """Validates user access according to network policy rules. + + This use case implements the business logic for determining whether a user + is allowed to access resources based on the configured network policy. + + Business Rules: + 1. If no policy is attached to the session, + access is DENIED (secure by default) + 2. If policy has no group restrictions, access is GRANTED + 3. Otherwise, check if user belongs to any of the policy's allowed groups + + Note: This implements a whitelist approach - only explicitly allowed + groups have access when policy has group restrictions. + """ + + _gateway: NetworkPolicyGatewayProtocol + + def __init__( + self, + network_policy_gateway: NetworkPolicyGatewayProtocol, + ): + """Initialize Validate user with network policy use case.""" + self._gateway = network_policy_gateway + + def execute( + self, + ldap_session: LDAPSession, + user: User, + ) -> bool: + """Execute use case.""" + policy = getattr(ldap_session, "policy", None) + + if policy is None: + return False + + if not policy.groups: + return True + + return self._gateway.has_access_to_policy( + policy, + user, + ) \ No newline at end of file From 119a8ae255e432285ecb51f4b8e1539cef1c8faa Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Mon, 9 Feb 2026 20:19:35 +0300 Subject: [PATCH 14/27] add: NetworkPolicyGateway class to manage network policies --- .../policies/network/gateway_protocol.py | 94 ++++++ .../pg/network_policy_gateway.py | 283 ++++++++++++++++++ 2 files changed, 377 insertions(+) create mode 100644 src/application/policies/network/gateway_protocol.py create mode 100644 src/infrastructure/pg/network_policy_gateway.py diff --git a/src/application/policies/network/gateway_protocol.py b/src/application/policies/network/gateway_protocol.py new file mode 100644 index 000000000..74ed074d8 --- /dev/null +++ b/src/application/policies/network/gateway_protocol.py @@ -0,0 +1,94 @@ +"""Network policy validator protocol. + +Copyright (c) 2025 MultiFactor +License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE +""" + +from ipaddress import IPv4Address, IPv6Address + +from domain.entities import NetworkPolicy, User, Group +from enums import ProtocolType + +from abstract_db_gateway import AbstractDBGateWay + + +class NetworkPolicyGatewayProtocol(AbstractDBGateWay[NetworkPolicy, int]): + """Protocol for validating network policies.""" + + async def get_all(self) -> list[NetworkPolicy]: + ... + + async def get_with_for_update(self, _id: int) -> NetworkPolicy: + ... + + async def get_groups(self, groups: list[str]) -> list[Group]: + ... + + async def get_policy_count(self) -> int: + ... + + async def update_priority(self, priority: int) -> None: + ... + + async def disable_policy(self, _id: int) -> None: + ... + + async def check_policy_exists(self, policy: NetworkPolicy) -> bool: + ... + + async def get_by_protocol( + self, + ip: IPv4Address | IPv6Address, + protocol_type: ProtocolType, + ) -> NetworkPolicy | None: + """Get network policy by protocol.""" + ... + + async def _get_policy_by_user( + self, + ip: IPv4Address | IPv6Address, + user: User, + protocol_type: ProtocolType, + ) -> NetworkPolicy | None: + """Get user policy.""" + ... + + async def get_http_policy_by_user( + self, + ip: IPv4Address | IPv6Address, + user: User, + ) -> NetworkPolicy | None: + """Get user HTTP policy.""" + return await self._get_policy_by_user(ip, user, ProtocolType.HTTP) + + async def get_kerberos_policy_by_user( + self, + ip: IPv4Address | IPv6Address, + user: User, + ) -> NetworkPolicy | None: + """Get user Kerberos policy.""" + return await self._get_policy_by_user(ip, user, ProtocolType.KERBEROS) + + async def get_ldap_policy_by_user( + self, + ip: IPv4Address | IPv6Address, + user: User, + ) -> NetworkPolicy | None: + """Get user LDAP policy.""" + return await self._get_policy_by_user(ip, user, ProtocolType.LDAP) + + async def check_mfa_group( # халивар + self, + policy: NetworkPolicy, + user: User, + ) -> bool: + """Check if user is in a group with MFA policy.""" + ... + + async def has_access_to_policy( + self, + policy: NetworkPolicy, + user: User, + ) -> bool: + """Check if user is in a valid group for the policy.""" + ... \ No newline at end of file diff --git a/src/infrastructure/pg/network_policy_gateway.py b/src/infrastructure/pg/network_policy_gateway.py new file mode 100644 index 000000000..dc4e3afe5 --- /dev/null +++ b/src/infrastructure/pg/network_policy_gateway.py @@ -0,0 +1,283 @@ +"""Network policies gateway. + +Copyright (c) 2025 MultiFactor +License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE +""" + +from sqlalchemy import delete, exists, func, select, update, Select, text, true, or_ +from sqlalchemy.exc import IntegrityError +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.orm import selectinload +from ipaddress import IPv4Address, IPv6Address +from domain.entities import Group, NetworkPolicy, User +from application.policies.network.exceptions import ( + NetworkPolicyAlreadyExistsError, + NetworkPolicyNotFoundError, +) +from enums import ProtocolType +from application.utils.queries import get_groups +from .tables import queryable_attr as qa + + +class NetworkPolicyGateway: + """Network policy gateway.""" + + def __init__(self, session: AsyncSession): + """Initialize Network policy gateway.""" + self._session = session + + async def get(self, _id: int) -> NetworkPolicy: + """Get network policy.""" + policy = await self._session.scalar( + select(NetworkPolicy) + .filter_by(id=_id) + .options( + selectinload(qa(NetworkPolicy.groups)).selectinload( + qa(Group.directory), + ), + selectinload(qa(NetworkPolicy.mfa_groups)).selectinload( + qa(Group.directory), + ), + ), + ) + if not policy: + raise NetworkPolicyNotFoundError( + f"Policy with id {_id} not found.", + ) + return policy + + async def create( + self, + policy: NetworkPolicy, + ) -> NetworkPolicy: + """Get network policy.""" + try: + self._session.add(policy) + await self._session.flush() + await self._session.refresh(policy) + return policy + except IntegrityError: + raise NetworkPolicyAlreadyExistsError("Entry already exists") + + async def get_groups(self, groups: list[str]) -> list[Group]: + return await get_groups(groups, self._session) + + async def get_all(self) -> list[NetworkPolicy]: + result = await self._session.scalars( + select(NetworkPolicy) + .options( + selectinload(qa(NetworkPolicy.groups)).selectinload( + qa(Group.directory), + ), + selectinload(qa(NetworkPolicy.mfa_groups)).selectinload( + qa(Group.directory), + ), + ) + .order_by(qa(NetworkPolicy.priority).asc()), + ) + return list(result) + + async def get_with_for_update(self, _id: int) -> NetworkPolicy: + policy = await self._session.scalar( + select(NetworkPolicy) + .filter_by(id=_id) + .with_for_update() + .options( + selectinload(qa(NetworkPolicy.groups)).selectinload( + qa(Group.directory), + ), + selectinload(qa(NetworkPolicy.mfa_groups)).selectinload( + qa(Group.directory), + ), + ), + ) + if not policy: + raise NetworkPolicyNotFoundError( + f"Policy with id {_id} not found.", + ) + return policy + + async def delete(self, _id: int) -> None: + await self._session.execute( + delete(NetworkPolicy) + .filter_by(id=_id), + ) # fmt: skip + await self._session.flush() + + async def get_policy_count(self) -> int: + count = await self._session.scalars( + select(func.count()) + .select_from(NetworkPolicy) + .filter_by(enabled=True), + ) + return count.one() + + async def update_priority(self, priority: int) -> None: + await self._session.execute( + update(NetworkPolicy) + .values({"priority": NetworkPolicy.priority - 1}) + .filter(qa(NetworkPolicy.priority) > priority), + ) + + async def disable_policy(self, _id: int) -> None: + await self._session.execute( + update(NetworkPolicy).filter_by(id=_id).values(enabled=False), + ) + + async def check_policy_exists(self, policy: NetworkPolicy) -> bool: + result = await self._session.scalars( + select( + exists(NetworkPolicy).where( + qa(NetworkPolicy.name) == policy.name, + qa(NetworkPolicy.netmasks) == policy.netmasks, + qa(NetworkPolicy.id) != policy.id, + ), + ), + ) + return result.one() + + def _build_base_query( + self, + ip: IPv4Address | IPv6Address, + protocol_type: ProtocolType, + ) -> Select: + """Build a base query for network policies. + + :param IPv4Address | IPv6Address ip: IP address to filter + :param ProtocolType protocol_type: Protocol to filter + :param list[int] | None user_group_ids: + List of user group IDs, optional + :return: Select query + """ + protocol_field = getattr(NetworkPolicy, protocol_type) + query = ( + select(NetworkPolicy) + .options( + selectinload(qa(NetworkPolicy.groups)), + selectinload(qa(NetworkPolicy.mfa_groups)), + ) + .filter( + qa(NetworkPolicy.enabled).is_(True), + text(':ip <<= ANY("Policies".netmasks)').bindparams(ip=ip), + protocol_field == true(), + ) + .order_by(qa(NetworkPolicy.priority).asc()) + .limit(1) + ) + + return query + + async def get_by_protocol( + self, + ip: IPv4Address | IPv6Address, + protocol_type: ProtocolType, + ) -> NetworkPolicy | None: + """Get network policy by protocol.""" + query = self._build_base_query(ip, protocol_type) + return await self._session.scalar(query) + + async def get_user_network_policy( + self, + ip: IPv4Address | IPv6Address, + user: User, + policy_type: ProtocolType, + ) -> NetworkPolicy | None: + """Get the highest priority network policy for user, ip and protocol. + + :param User user: user object + :return NetworkPolicy | None: a NetworkPolicy object + """ + user_group_ids = [group.id for group in user.groups] + + query = self._build_base_query(ip, policy_type) + + if user_group_ids is not None: + query = query.filter( + or_( + qa(NetworkPolicy.groups) == None, # noqa + qa(NetworkPolicy.groups).any( + qa(Group.id).in_(user_group_ids), + ), + ), + ) + + return await self._session.scalar(query) + + async def get_user_http_policy( + self, + ip: IPv4Address | IPv6Address, + user: User, + ) -> NetworkPolicy | None: + """Get user HTTP policy.""" + return await self.get_user_network_policy( + ip, + user, + ProtocolType.HTTP, + ) + + async def get_user_kerberos_policy( + self, + ip: IPv4Address | IPv6Address, + user: User, + ) -> NetworkPolicy | None: + """Get user Kerberos policy.""" + return await self.get_user_network_policy( + ip, + user, + ProtocolType.KERBEROS, + ) + + async def get_user_ldap_policy( + self, + ip: IPv4Address | IPv6Address, + user: User, + ) -> NetworkPolicy | None: + """Get user LDAP policy.""" + return await self.get_user_network_policy( + ip, + user, + ProtocolType.LDAP, + ) + + async def check_mfa_group( + self, + policy: NetworkPolicy, + user: User, + ) -> bool: + """Check if user is in a group with MFA policy. + + :param NetworkPolicy policy: policy object + :param User user: user object + :return bool: status + """ + return await self._session.scalar( + select( + exists().where( # type: ignore + qa(Group.mfa_policies).contains(policy), + qa(Group.users).contains(user), + ), + ), + ) + + async def has_access_to_policy( + self, + user: User | None, + policy: NetworkPolicy | None, + ) -> bool: + """Validate user groups, is it including to policy. + + :param User user: db user + :param NetworkPolicy policy: db policy + :return bool: status + """ + query = select( + select(Group) + .join(qa(Group.users)) + .join(qa(Group.policies), isouter=True) + .exists() + .where(qa(Group.users).contains(user)) + .where(qa(Group.policies).contains(policy)), + ) + group = await self._session.scalar(query) + + return bool(group) \ No newline at end of file From f56430f0230e0e32aaa509a040c8dab0482f9e9e Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Mon, 9 Feb 2026 20:19:44 +0300 Subject: [PATCH 15/27] refactor: update network policy imports and provide new use cases in ioc.py --- src/application/policies/network/__init__.py | 11 +++--- src/ioc.py | 36 +++++++++----------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/src/application/policies/network/__init__.py b/src/application/policies/network/__init__.py index c4ea76e70..7e180b4a2 100644 --- a/src/application/policies/network/__init__.py +++ b/src/application/policies/network/__init__.py @@ -6,10 +6,8 @@ NetworkPolicyAlreadyExistsError, NetworkPolicyNotFoundError, ) -from .gateway import NetworkPolicyGateway -from .use_cases import NetworkPolicyUseCase, NetworkPolicyValidatorUseCase -from .validator_gateway import NetworkPolicyValidatorGateway -from .validator_protocol import NetworkPolicyValidatorProtocol +from .use_cases import NetworkPolicyUseCase, NetworkPolicyValidatorUseCase, ValidatePolicyAccessUseCase +from .gateway_protocol import NetworkPolicyGatewayProtocol __all__ = [ "NetworkPolicyDTO", @@ -18,9 +16,8 @@ "NetworkPolicyAlreadyExistsError", "LastActivePolicyError", "NetworkPolicyNotFoundError", - "NetworkPolicyGateway", "NetworkPolicyUseCase", "NetworkPolicyValidatorUseCase", - "NetworkPolicyValidatorGateway", - "NetworkPolicyValidatorProtocol", + "NetworkPolicyGatewayProtocol", + "ValidatePolicyAccessUseCase", ] diff --git a/src/ioc.py b/src/ioc.py index 1d5f31d97..0ea3ae16b 100644 --- a/src/ioc.py +++ b/src/ioc.py @@ -123,11 +123,10 @@ from application.policies.audit.policies_dao import AuditPoliciesDAO from application.policies.audit.service import AuditService from application.policies.network import ( - NetworkPolicyGateway, NetworkPolicyUseCase, - NetworkPolicyValidatorGateway, - NetworkPolicyValidatorProtocol, NetworkPolicyValidatorUseCase, + NetworkPolicyGatewayProtocol, + ValidatePolicyAccessUseCase, ) from application.policies.password import ( PasswordPolicyDAO, @@ -152,7 +151,9 @@ from application.session_storage import RedisSessionStorage, SessionStorage from application.session_storage.repository import SessionRepository from password_utils import PasswordUtils + from infrastructure.pg.master_gateway import PGMasterGateway +from infrastructure.pg.network_policy_gateway import NetworkPolicyGateway SessionStorageClient = NewType("SessionStorageClient", redis.Redis) KadminHTTPClient = NewType("KadminHTTPClient", httpx.AsyncClient) @@ -499,6 +500,16 @@ def get_dhcp_mngr( rootdse_reader = provide(RootDSEReader, scope=Scope.REQUEST) dcinfo_reader = provide(DCInfoReader, scope=Scope.REQUEST) + network_policy_gateway = provide( + NetworkPolicyGateway, + provides=NetworkPolicyGatewayProtocol, + scope=Scope.REQUEST, + ) + validate_policy_access_use_case = provide( + ValidatePolicyAccessUseCase, + scope=Scope.REQUEST, + ) + class LDAPContextProvider(Provider): """Context provider.""" @@ -547,16 +558,10 @@ class HTTPProvider(LDAPContextProvider): scope = Scope.REQUEST request = from_context(provides=Request, scope=Scope.REQUEST) monitor_use_case = provide(AuditMonitorUseCase, scope=Scope.REQUEST) - network_policy_gateway = provide(NetworkPolicyGateway, scope=Scope.REQUEST) network_policy_use_case = provide( NetworkPolicyUseCase, scope=Scope.REQUEST, ) - network_policy_validator_gateway = provide( - NetworkPolicyValidatorGateway, - provides=NetworkPolicyValidatorProtocol, - scope=Scope.REQUEST, - ) network_policy_validator_use_case = provide( NetworkPolicyValidatorUseCase, scope=Scope.REQUEST, @@ -723,15 +728,11 @@ class LDAPServerProvider(LDAPContextProvider): scope = Scope.SESSION network_policy_validator_gateway = provide( - NetworkPolicyValidatorGateway, + NetworkPolicyGateway, + provides=NetworkPolicyGatewayProtocol, scope=Scope.REQUEST, ) - network_policy_validator = provide( - NetworkPolicyValidatorGateway, - provides=NetworkPolicyValidatorProtocol, - scope=Scope.REQUEST, - ) network_policy_validator_use_case = provide( NetworkPolicyValidatorUseCase, scope=Scope.REQUEST, @@ -778,11 +779,6 @@ async def get_session( scope=Scope.REQUEST, ) - network_policy_validator = provide( - NetworkPolicyValidatorGateway, - provides=NetworkPolicyValidatorProtocol, - scope=Scope.REQUEST, - ) network_policy_validator_use_case = provide( NetworkPolicyValidatorUseCase, scope=Scope.REQUEST, From 2fe253ef24c54b3e5a3fd5fc54e669e49b27202f Mon Sep 17 00:00:00 2001 From: Nikita Ulianov Date: Mon, 9 Feb 2026 20:19:56 +0300 Subject: [PATCH 16/27] refactor: rename NetworkPolicyValidatorUseCase to ValidatePolicyAccessUseCase and update usage in BindRequest --- src/application/ldap_requests/bind.py | 11 +++++------ src/application/ldap_requests/contexts.py | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/application/ldap_requests/bind.py b/src/application/ldap_requests/bind.py index ab2b026eb..471c06d7d 100644 --- a/src/application/ldap_requests/bind.py +++ b/src/application/ldap_requests/bind.py @@ -161,13 +161,12 @@ async def handle( if uac_check(UserAccountControlFlag.ACCOUNTDISABLE): yield get_bad_response(LDAPBindErrors.ACCOUNT_DISABLED) return - policy = getattr(ctx.ldap_session, "policy", None) - if ( - policy is not None - ) and not await ctx.network_policy_validator.is_user_group_valid( + + has_access = await ctx.validate_policy_access_use_case.execute( + ctx.ldap_session, user, - policy, - ): + ) + if not has_access: yield get_bad_response(LDAPBindErrors.LOGON_FAILURE) return diff --git a/src/application/ldap_requests/contexts.py b/src/application/ldap_requests/contexts.py index 33ebf9840..8be872c05 100644 --- a/src/application/ldap_requests/contexts.py +++ b/src/application/ldap_requests/contexts.py @@ -16,7 +16,7 @@ ) from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.multifactor import LDAPMultiFactorAPI -from application.policies.network import NetworkPolicyValidatorUseCase +from application.policies.network import ValidatePolicyAccessUseCase from application.policies.password import PasswordPolicyUseCases from application.roles.access_manager import AccessManager from application.roles.role_use_case import RoleUseCase @@ -67,7 +67,7 @@ class LDAPBindRequestContext: password_use_cases: PasswordPolicyUseCases password_utils: PasswordUtils mfa: LDAPMultiFactorAPI - network_policy_validator: NetworkPolicyValidatorUseCase + validate_policy_access_use_case: ValidatePolicyAccessUseCase @dataclass From 4a5eeb830add33abecac8a279f316cec8f86bba7 Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 12:46:45 +0300 Subject: [PATCH 17/27] refactor: update abstract methods in NetworkPolicyGatewayProtocol for clarity and consistency --- .../policies/network/gateway_protocol.py | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/application/policies/network/gateway_protocol.py b/src/application/policies/network/gateway_protocol.py index 74ed074d8..b5be783d9 100644 --- a/src/application/policies/network/gateway_protocol.py +++ b/src/application/policies/network/gateway_protocol.py @@ -4,46 +4,47 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ +from abc import abstractmethod from ipaddress import IPv4Address, IPv6Address -from domain.entities import NetworkPolicy, User, Group -from enums import ProtocolType - from abstract_db_gateway import AbstractDBGateWay +from domain.entities import Group, NetworkPolicy, User +from enums import ProtocolType class NetworkPolicyGatewayProtocol(AbstractDBGateWay[NetworkPolicy, int]): """Protocol for validating network policies.""" - async def get_all(self) -> list[NetworkPolicy]: - ... + @abstractmethod + async def get_all(self) -> list[NetworkPolicy]: ... - async def get_with_for_update(self, _id: int) -> NetworkPolicy: - ... + @abstractmethod + async def get_with_for_update(self, _id: int) -> NetworkPolicy: ... - async def get_groups(self, groups: list[str]) -> list[Group]: - ... + @abstractmethod + async def get_groups(self, groups: list[str]) -> list[Group]: ... - async def get_policy_count(self) -> int: - ... + @abstractmethod + async def get_policy_count(self) -> int: ... - async def update_priority(self, priority: int) -> None: - ... + @abstractmethod + async def update_priority(self, priority: int) -> None: ... - async def disable_policy(self, _id: int) -> None: - ... + @abstractmethod + async def disable_policy(self, _id: int) -> None: ... - async def check_policy_exists(self, policy: NetworkPolicy) -> bool: - ... + @abstractmethod + async def check_policy_exists(self, policy: NetworkPolicy) -> bool: ... + @abstractmethod async def get_by_protocol( self, ip: IPv4Address | IPv6Address, protocol_type: ProtocolType, ) -> NetworkPolicy | None: """Get network policy by protocol.""" - ... + @abstractmethod async def _get_policy_by_user( self, ip: IPv4Address | IPv6Address, @@ -51,7 +52,6 @@ async def _get_policy_by_user( protocol_type: ProtocolType, ) -> NetworkPolicy | None: """Get user policy.""" - ... async def get_http_policy_by_user( self, @@ -77,18 +77,18 @@ async def get_ldap_policy_by_user( """Get user LDAP policy.""" return await self._get_policy_by_user(ip, user, ProtocolType.LDAP) + @abstractmethod async def check_mfa_group( # халивар self, policy: NetworkPolicy, user: User, ) -> bool: """Check if user is in a group with MFA policy.""" - ... + @abstractmethod async def has_access_to_policy( self, policy: NetworkPolicy, user: User, ) -> bool: """Check if user is in a valid group for the policy.""" - ... \ No newline at end of file From 8db1d6ac90a3813d897a03f6c52d60eece19a9b7 Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 12:52:19 +0300 Subject: [PATCH 18/27] refactor: reorganize imports in NetworkPolicyGateway for better readability --- .../pg/network_policy_gateway.py | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/infrastructure/pg/network_policy_gateway.py b/src/infrastructure/pg/network_policy_gateway.py index dc4e3afe5..1a26aa450 100644 --- a/src/infrastructure/pg/network_policy_gateway.py +++ b/src/infrastructure/pg/network_policy_gateway.py @@ -4,18 +4,31 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from sqlalchemy import delete, exists, func, select, update, Select, text, true, or_ +from ipaddress import IPv4Address, IPv6Address + +from sqlalchemy import ( + Select, + delete, + exists, + func, + or_, + select, + text, + true, + update, +) from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from ipaddress import IPv4Address, IPv6Address -from domain.entities import Group, NetworkPolicy, User + from application.policies.network.exceptions import ( NetworkPolicyAlreadyExistsError, NetworkPolicyNotFoundError, ) -from enums import ProtocolType from application.utils.queries import get_groups +from domain.entities import Group, NetworkPolicy, User +from enums import ProtocolType + from .tables import queryable_attr as qa @@ -258,7 +271,7 @@ async def check_mfa_group( ), ), ) - + async def has_access_to_policy( self, user: User | None, @@ -280,4 +293,4 @@ async def has_access_to_policy( ) group = await self._session.scalar(query) - return bool(group) \ No newline at end of file + return bool(group) From 431b90be789e65de86260b375bffb08e5a03e7d1 Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 12:52:30 +0300 Subject: [PATCH 19/27] refactor: streamline network policy use case methods and improve naming conventions --- src/application/policies/network/use_cases.py | 66 +++++++------------ 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/src/application/policies/network/use_cases.py b/src/application/policies/network/use_cases.py index b525ed840..60c34864c 100644 --- a/src/application/policies/network/use_cases.py +++ b/src/application/policies/network/use_cases.py @@ -12,8 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from domain.entities import NetworkPolicy, User -from enums import AuthorizationRules, ProtocolType +from application.dialogue import LDAPSession from application.policies.network.dto import ( NetworkPolicyDTO, NetworkPolicyUpdateDTO, @@ -23,7 +22,9 @@ LastActivePolicyError, NetworkPolicyAlreadyExistsError, ) -from application.dialogue import LDAPSession +from domain.entities import NetworkPolicy, User +from enums import AuthorizationRules + from .gateway_protocol import NetworkPolicyGatewayProtocol @@ -73,37 +74,17 @@ def __init__( async def create( self, dto: NetworkPolicyDTO, - ) -> NetworkPolicyDTO: + ) -> None: """Create network policy.""" policy_model = _convert_dto_to_model(dto) if dto.groups: - policy_model.groups = ( - await self.gateway.get_groups(dto.groups) - ) + policy_model.groups = await self.gateway.get_groups(dto.groups) if dto.mfa_groups: - policy_model.mfa_groups = ( - await self.gateway.get_groups( - dto.mfa_groups, - ) + policy_model.mfa_groups = await self.gateway.get_groups( + dto.mfa_groups, ) - policy = await self.gateway.create(policy_model) - return NetworkPolicyDTO[int]( - id=policy.id, - name=policy.name, - netmasks=policy.netmasks, - priority=policy.priority, - raw=policy.raw, - mfa_status=policy.mfa_status, - is_http=policy.is_http, - is_ldap=policy.is_ldap, - is_kerberos=policy.is_kerberos, - bypass_no_connection=policy.bypass_no_connection, - bypass_service_failure=policy.bypass_service_failure, - enabled=policy.enabled, - groups=dto.groups, - mfa_groups=dto.mfa_groups, - ) + await self.gateway.create(policy_model) async def get(self, _id: int) -> NetworkPolicyDTO[int]: policy = await self.gateway.get_with_for_update(_id) @@ -113,7 +94,7 @@ async def get_list_policies( self, ) -> list[NetworkPolicyDTO]: """Get list of network policies.""" - policies = await self.gateway.get_list_policies() + policies = await self.gateway.get_all() return list(map(_convert_model_to_dto, policies)) async def delete(self, _id: int) -> None: @@ -185,9 +166,7 @@ async def _apply_group_updates( """Apply group updates.""" if dto.groups is not None: policy.groups = ( - await self.gateway.get_groups(dto.groups) - if dto.groups - else [] + await self.gateway.get_groups(dto.groups) if dto.groups else [] ) if dto.mfa_groups is not None: @@ -222,6 +201,7 @@ class NetworkPolicyValidatorUseCase(AbstractService): """Network policies validator use cases.""" _gateway: NetworkPolicyGatewayProtocol + def __init__( self, network_policy_gateway: NetworkPolicyGatewayProtocol, @@ -235,7 +215,7 @@ async def get_user_http_policy( user: User, ) -> NetworkPolicy | None: """Get user HTTP policy.""" - return await self._gateway.get_user_http_policy( + return await self._gateway.get_http_policy_by_user( ip, user, ) @@ -246,7 +226,7 @@ async def get_user_kerberos_policy( user: User, ) -> NetworkPolicy | None: """Get user Kerberos policy.""" - return await self._gateway.get_user_kerberos_policy( + return await self._gateway.get_kerberos_policy_by_user( ip, user, ) @@ -271,16 +251,16 @@ async def check_mfa_group( class ValidatePolicyAccessUseCase: """Validates user access according to network policy rules. - + This use case implements the business logic for determining whether a user is allowed to access resources based on the configured network policy. - + Business Rules: - 1. If no policy is attached to the session, + 1. If no policy is attached to the session, access is DENIED (secure by default) 2. If policy has no group restrictions, access is GRANTED 3. Otherwise, check if user belongs to any of the policy's allowed groups - + Note: This implements a whitelist approach - only explicitly allowed groups have access when policy has group restrictions. """ @@ -294,21 +274,21 @@ def __init__( """Initialize Validate user with network policy use case.""" self._gateway = network_policy_gateway - def execute( + async def execute( self, ldap_session: LDAPSession, user: User, ) -> bool: """Execute use case.""" - policy = getattr(ldap_session, "policy", None) + policy: NetworkPolicy | None = getattr(ldap_session, "policy", None) if policy is None: return False - + if not policy.groups: return True - return self._gateway.has_access_to_policy( + return await self._gateway.has_access_to_policy( policy, user, - ) \ No newline at end of file + ) From 57aab9eaaf2bf47219e556474fe4db3721ba9a23 Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 12:58:35 +0300 Subject: [PATCH 20/27] refactor: update create method in NetworkPolicyFastAPIAdapter to return None and adjust add_network_policy to reflect changes --- src/api/network/adapters/network.py | 5 ++--- src/api/network/router.py | 7 +++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/api/network/adapters/network.py b/src/api/network/adapters/network.py index 4875ea9c2..82d3babe4 100644 --- a/src/api/network/adapters/network.py +++ b/src/api/network/adapters/network.py @@ -63,9 +63,9 @@ def _convert_raw(dto: NetworkPolicyDTO[int]) -> list[str | dict]: class NetworkPolicyFastAPIAdapter(BaseAdapter[NetworkPolicyUseCase]): """Network policy adapter.""" - async def create(self, policy: Policy) -> PolicyResponse: + async def create(self, policy: Policy) -> None: """Create network policy.""" - policy_dto = await self._service.create( + await self._service.create( NetworkPolicyDTO( id=None, name=policy.name, @@ -82,7 +82,6 @@ async def create(self, policy: Policy) -> PolicyResponse: mfa_groups=policy.mfa_groups, ), ) - return _convert_dto_to_schema(policy_dto) async def get_list_policies(self) -> list[PolicyResponse]: """Get list of network policies.""" diff --git a/src/api/network/router.py b/src/api/network/router.py index e123811a5..483af6995 100644 --- a/src/api/network/router.py +++ b/src/api/network/router.py @@ -19,12 +19,12 @@ ) from api.network.adapters.network import NetworkPolicyFastAPIAdapter from api.utils import require_master_db -from enums import DomainCodes from application.policies.network.exceptions import ( LastActivePolicyError, NetworkPolicyAlreadyExistsError, NetworkPolicyNotFoundError, ) +from enums import DomainCodes from .schema import ( Policy, @@ -70,16 +70,15 @@ async def add_network_policy( policy: Policy, adapter: FromDishka[NetworkPolicyFastAPIAdapter], -) -> PolicyResponse: +) -> None: """Add policy. \f :param Policy policy: policy to add :raises HTTPException: 422 invalid group DN :raises HTTPException: 422 Entry already exists - :return PolicyResponse: Ready policy """ - return await adapter.create(policy) + await adapter.create(policy) @network_router.get("", name="policy", error_map=error_map) From 35dc9afe698adb57e6ecefe3dbcc42f68ed5b4f7 Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 12:58:49 +0300 Subject: [PATCH 21/27] refactor: reorder imports in bind.py for improved organization --- src/application/ldap_requests/bind.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/application/ldap_requests/bind.py b/src/application/ldap_requests/bind.py index 471c06d7d..041f06d73 100644 --- a/src/application/ldap_requests/bind.py +++ b/src/application/ldap_requests/bind.py @@ -10,8 +10,6 @@ from pydantic import Field from sqlalchemy.exc import OperationalError -from domain.entities import NetworkPolicy -from enums import MFAFlags from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( KRBAPIAddPrincipalError, @@ -35,6 +33,8 @@ from application.objects import ProtocolRequests, UserAccountControlFlag from application.user_account_control import get_check_uac from application.utils.queries import set_user_logon_attrs +from domain.entities import NetworkPolicy +from enums import MFAFlags from .base import BaseRequest from .contexts import LDAPBindRequestContext, LDAPUnbindRequestContext From 5b53bd411149d8ae0cbd50c3c0f1d0cfd4c37874 Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 13:37:53 +0300 Subject: [PATCH 22/27] refactor: reorganize NetworkPolicy handling in LDAPSession for clarity --- src/application/dialogue.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/application/dialogue.py b/src/application/dialogue.py index 54b371af3..0e4124573 100644 --- a/src/application/dialogue.py +++ b/src/application/dialogue.py @@ -17,9 +17,9 @@ import gssapi +from application.policies.network import NetworkPolicyValidatorUseCase from domain.entities import NetworkPolicy, User from enums import ProtocolType -from application.policies.network import NetworkPolicyValidatorUseCase from .session_storage import SessionStorage @@ -71,9 +71,8 @@ async def from_db( class LDAPSession: """LDAPSession for one client handling.""" + _policy: NetworkPolicy | None ip: IPv4Address | IPv6Address - policy: NetworkPolicy | None - gssapi_authenticated: bool = False gssapi_security_context: gssapi.SecurityContext | None = None gssapi_security_layer: GSSAPISL @@ -94,6 +93,7 @@ def __init__( self.id = uuid.uuid4() self.storage = storage self._task_group_cm = TaskGroup() + self._policy = None def __str__(self) -> str: """Session with id.""" @@ -153,12 +153,19 @@ async def validate_conn( ProtocolType.LDAP, ) if policy is not None: - self.policy = policy + self._policy = policy await self.bind_session() return raise PermissionError + @property + def policy(self) -> NetworkPolicy: + if self._policy is None: + raise PermissionError + + return self._policy + @property def key(self) -> str: """Get key.""" From a97b51cdc97da8239c665e47f04a70d21555b013 Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 15:37:22 +0300 Subject: [PATCH 23/27] refactor: reorder imports in auth_manager.py for improved organization --- src/application/auth/auth_manager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/application/auth/auth_manager.py b/src/application/auth/auth_manager.py index 079a3c910..7283c6b86 100644 --- a/src/application/auth/auth_manager.py +++ b/src/application/auth/auth_manager.py @@ -11,9 +11,6 @@ from starlette.datastructures import URL from abstract_service import AbstractService -from config import Settings -from domain.entities import User -from enums import AuthorizationRules, MFAFlags from application.auth.dto import SetupDTO from application.auth.mfa_manager import MFAManager from application.auth.schemas import LoginDTO, OAuth2Form @@ -38,6 +35,9 @@ from application.session_storage.repository import SessionRepository from application.user_account_control import get_check_uac from application.utils.queries import get_user +from config import Settings +from domain.entities import User +from enums import AuthorizationRules, MFAFlags from password_utils import PasswordUtils From dbda7f07cb7ad66b4864e17d58a520276f83f33c Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 15:38:37 +0300 Subject: [PATCH 24/27] refactor: reorganize use case imports and add ValidateMFARequirementUseCase for improved clarity --- src/application/policies/network/__init__.py | 8 +++- src/application/policies/network/use_cases.py | 40 +++++++++++++++---- src/ioc.py | 16 +++++--- 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/application/policies/network/__init__.py b/src/application/policies/network/__init__.py index 7e180b4a2..0cb7f0bfd 100644 --- a/src/application/policies/network/__init__.py +++ b/src/application/policies/network/__init__.py @@ -6,8 +6,13 @@ NetworkPolicyAlreadyExistsError, NetworkPolicyNotFoundError, ) -from .use_cases import NetworkPolicyUseCase, NetworkPolicyValidatorUseCase, ValidatePolicyAccessUseCase from .gateway_protocol import NetworkPolicyGatewayProtocol +from .use_cases import ( + NetworkPolicyUseCase, + NetworkPolicyValidatorUseCase, + ValidateMFARequirementUseCase, + ValidatePolicyAccessUseCase, +) __all__ = [ "NetworkPolicyDTO", @@ -20,4 +25,5 @@ "NetworkPolicyValidatorUseCase", "NetworkPolicyGatewayProtocol", "ValidatePolicyAccessUseCase", + "ValidateMFARequirementUseCase", ] diff --git a/src/application/policies/network/use_cases.py b/src/application/policies/network/use_cases.py index 60c34864c..3d8b4601e 100644 --- a/src/application/policies/network/use_cases.py +++ b/src/application/policies/network/use_cases.py @@ -12,7 +12,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from application.dialogue import LDAPSession from application.policies.network.dto import ( NetworkPolicyDTO, NetworkPolicyUpdateDTO, @@ -23,7 +22,7 @@ NetworkPolicyAlreadyExistsError, ) from domain.entities import NetworkPolicy, User -from enums import AuthorizationRules +from enums import AuthorizationRules, MFAFlags from .gateway_protocol import NetworkPolicyGatewayProtocol @@ -276,15 +275,10 @@ def __init__( async def execute( self, - ldap_session: LDAPSession, + policy: NetworkPolicy, user: User, ) -> bool: """Execute use case.""" - policy: NetworkPolicy | None = getattr(ldap_session, "policy", None) - - if policy is None: - return False - if not policy.groups: return True @@ -292,3 +286,33 @@ async def execute( policy, user, ) + + +class ValidateMFARequirementUseCase: + """Validates if MFA is required according to network policy rules.""" + + _gateway: NetworkPolicyGatewayProtocol + + def __init__( + self, + network_policy_gateway: NetworkPolicyGatewayProtocol, + ) -> None: + """Initialize Validate MFA requirement use case.""" + self._gateway = network_policy_gateway + + async def execute( + self, + policy: NetworkPolicy, + user: User, + ) -> bool: + """Execute use case.""" + if policy.mfa_status == MFAFlags.DISABLED: + return False + + if policy.mfa_status == MFAFlags.WHITELIST: + return await self._gateway.check_mfa_group( + policy, + user, + ) + + return True diff --git a/src/ioc.py b/src/ioc.py index 0ea3ae16b..e53ac9497 100644 --- a/src/ioc.py +++ b/src/ioc.py @@ -8,7 +8,6 @@ import httpx import redis.asyncio as redis -from db_routing import EngineRegistry, RoutingSession from dishka import Provider, Scope, from_context, provide from fastapi import Request from loguru import logger @@ -38,8 +37,6 @@ UserPasswordHistoryResetFastAPIAdapter, ) from api.shadow.adapter import ShadowAdapter -from authorization_provider_protocol import AuthorizationProviderProtocol -from config import Settings from application.auth import AuthManager, MFAManager from application.auth.setup_gateway import SetupGateway from application.auth.use_cases import SetupUseCase @@ -123,9 +120,10 @@ from application.policies.audit.policies_dao import AuditPoliciesDAO from application.policies.audit.service import AuditService from application.policies.network import ( + NetworkPolicyGatewayProtocol, NetworkPolicyUseCase, NetworkPolicyValidatorUseCase, - NetworkPolicyGatewayProtocol, + ValidateMFARequirementUseCase, ValidatePolicyAccessUseCase, ) from application.policies.password import ( @@ -150,10 +148,12 @@ from application.rootdse.reader import DCInfoReader, RootDSEReader from application.session_storage import RedisSessionStorage, SessionStorage from application.session_storage.repository import SessionRepository -from password_utils import PasswordUtils - +from authorization_provider_protocol import AuthorizationProviderProtocol +from config import Settings +from db_routing import EngineRegistry, RoutingSession from infrastructure.pg.master_gateway import PGMasterGateway from infrastructure.pg.network_policy_gateway import NetworkPolicyGateway +from password_utils import PasswordUtils SessionStorageClient = NewType("SessionStorageClient", redis.Redis) KadminHTTPClient = NewType("KadminHTTPClient", httpx.AsyncClient) @@ -509,6 +509,10 @@ def get_dhcp_mngr( ValidatePolicyAccessUseCase, scope=Scope.REQUEST, ) + validate_mfa_requirement_use_case = provide( + ValidateMFARequirementUseCase, + scope=Scope.REQUEST, + ) class LDAPContextProvider(Provider): From e0bffb9b64d18ff4c0740f0210515923305447cc Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 16:00:49 +0300 Subject: [PATCH 25/27] refactor: reorganize imports and integrate ValidateMFARequirementUseCase for improved MFA handling --- src/application/auth/mfa_manager.py | 38 ++++++++++----------- src/application/ldap_requests/bind.py | 40 +++++++++-------------- src/application/ldap_requests/contexts.py | 8 +++-- 3 files changed, 38 insertions(+), 48 deletions(-) diff --git a/src/application/auth/mfa_manager.py b/src/application/auth/mfa_manager.py index 0efab30a1..e08e4d030 100644 --- a/src/application/auth/mfa_manager.py +++ b/src/application/auth/mfa_manager.py @@ -18,9 +18,6 @@ from starlette.datastructures import URL from abstract_service import AbstractService -from config import Settings -from domain.entities import CatalogueSetting, NetworkPolicy, User -from enums import AuthorizationRules, MFAChallengeStatuses, MFAFlags from application.auth.exceptions.mfa import ( AuthenticationError, ForbiddenError, @@ -46,11 +43,17 @@ MultifactorAPI, ) from application.policies.audit.monitor import AuditMonitorUseCase -from application.policies.network import NetworkPolicyValidatorUseCase +from application.policies.network import ( + NetworkPolicyValidatorUseCase, + ValidateMFARequirementUseCase, +) from application.session_storage import SessionStorage from application.session_storage.repository import SessionRepository -from password_utils import PasswordUtils +from config import Settings +from domain.entities import CatalogueSetting, NetworkPolicy, User +from enums import AuthorizationRules, MFAChallengeStatuses from infrastructure.pg.tables import queryable_attr as qa +from password_utils import PasswordUtils ALGORITHM = "HS256" @@ -70,6 +73,7 @@ def __init__( password_utils: PasswordUtils, identity_provider: IdentityProvider, network_policy_validator: NetworkPolicyValidatorUseCase, + validate_mfa_requirement: ValidateMFARequirementUseCase, ) -> None: """Initialize dependencies via DI. @@ -89,6 +93,7 @@ def __init__( self._password_utils = password_utils self._identity_provider = identity_provider self._network_policy_validator = network_policy_validator + self.validate_mfa_requirement = validate_mfa_requirement def __getattribute__(self, name: str) -> object: """Intercept attribute access.""" @@ -339,23 +344,14 @@ async def proxy_request(self, principal: str, ip: IPv4Address) -> None: f"Network policy not found for user {principal}.", ) - if ( - not self._ldap_mfa_api - or network_policy.mfa_status == MFAFlags.DISABLED - ): + if not self._ldap_mfa_api: return - elif network_policy.mfa_status in ( - MFAFlags.ENABLED, - MFAFlags.WHITELIST, - ): - if ( - network_policy.mfa_status == MFAFlags.WHITELIST - and not await self._network_policy_validator.check_mfa_group( - network_policy, - user, - ) - ): - return + + is_mfa_required = await self.validate_mfa_requirement.execute( + network_policy, + user, + ) + if not is_mfa_required: try: if await self._ldap_mfa_api.ldap_validate_mfa( user.user_principal_name, diff --git a/src/application/ldap_requests/bind.py b/src/application/ldap_requests/bind.py index 041f06d73..55c15bd10 100644 --- a/src/application/ldap_requests/bind.py +++ b/src/application/ldap_requests/bind.py @@ -34,7 +34,6 @@ from application.user_account_control import get_check_uac from application.utils.queries import set_user_logon_attrs from domain.entities import NetworkPolicy -from enums import MFAFlags from .base import BaseRequest from .contexts import LDAPBindRequestContext, LDAPUnbindRequestContext @@ -163,7 +162,7 @@ async def handle( return has_access = await ctx.validate_policy_access_use_case.execute( - ctx.ldap_session, + ctx.ldap_session.policy, user, ) if not has_access: @@ -180,30 +179,21 @@ async def handle( yield get_bad_response(LDAPBindErrors.PASSWORD_MUST_CHANGE) return - if (policy is not None) and ( - policy.mfa_status in (MFAFlags.ENABLED, MFAFlags.WHITELIST) - and ctx.mfa is not None - ): - request_2fa = True - if policy.mfa_status == MFAFlags.WHITELIST: - request_2fa = ( - await ctx.network_policy_validator.check_mfa_group( - policy, - user, - ) - ) - - if request_2fa: - mfa_status = await self.check_mfa( - ctx.mfa, - user.user_principal_name, - self.authentication_choice.otpassword, - policy, - ) + is_mfa_required = await ctx.validate_mfa_requirement.execute( + ctx.ldap_session.policy, + user, + ) - if mfa_status is False: - yield get_bad_response(LDAPBindErrors.LOGON_FAILURE) - return + if is_mfa_required and ctx.mfa is not None: + mfa_status = await self.check_mfa( + ctx.mfa, + user.user_principal_name, + self.authentication_choice.otpassword, + ctx.ldap_session.policy, + ) + if mfa_status is False: + yield get_bad_response(LDAPBindErrors.LOGON_FAILURE) + return with contextlib.suppress( KRBAPIAddPrincipalError, diff --git a/src/application/ldap_requests/contexts.py b/src/application/ldap_requests/contexts.py index 8be872c05..2804225df 100644 --- a/src/application/ldap_requests/contexts.py +++ b/src/application/ldap_requests/contexts.py @@ -8,7 +8,6 @@ from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings from application.dialogue import LDAPSession from application.kerberos import AbstractKadmin from application.ldap_schema.attribute_value_validator import ( @@ -16,12 +15,16 @@ ) from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.multifactor import LDAPMultiFactorAPI -from application.policies.network import ValidatePolicyAccessUseCase +from application.policies.network import ( + ValidateMFARequirementUseCase, + ValidatePolicyAccessUseCase, +) from application.policies.password import PasswordPolicyUseCases from application.roles.access_manager import AccessManager from application.roles.role_use_case import RoleUseCase from application.rootdse.reader import RootDSEReader from application.session_storage import SessionStorage +from config import Settings from password_utils import PasswordUtils @@ -68,6 +71,7 @@ class LDAPBindRequestContext: password_utils: PasswordUtils mfa: LDAPMultiFactorAPI validate_policy_access_use_case: ValidatePolicyAccessUseCase + validate_mfa_requirement: ValidateMFARequirementUseCase @dataclass From 21d186e745ac13bc914630ea361e0714853d606f Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 16:02:06 +0300 Subject: [PATCH 26/27] refactor: imports across multiple modules for consistency and clarity --- src/alembic/env.py | 2 +- .../01f3f05a5b11_add_primary_group_id.py | 8 ++++---- src/alembic/versions/05ddc0bd562a_add_roles.py | 4 ++-- .../275222846605_initial_ldap_schema.py | 4 ++-- ...06ec_update_krbadmin_useraccountcontrol_.py | 4 ++-- .../versions/6f8fe2548893_fix_read_only.py | 2 +- .../71e642808369_add_directory_is_system.py | 2 +- .../versions/8164b4a9e1f1_add_ou_computers.py | 4 ++-- ...2bc16b87d_extend_password_policy_for_api.py | 2 +- .../ba78cef9700a_initial_entity_type.py | 6 +++--- .../c4888c68e221_fix_admin_attr_and_policy.py | 4 ++-- .../c5a9b3f2e8d7_add_contact_object_class.py | 4 ++-- .../versions/dafg3a4b22ab_add_preauth_princ.py | 2 +- ...f4c52a613e5_migrate_password_prop_from_E.py | 2 +- .../e4d6d99d32bd_add_audit_policies.py | 2 +- src/alembic/versions/fafc3d0b11ec_.py | 4 ++-- src/api/audit/router.py | 2 +- src/api/auth/router_auth.py | 2 +- src/api/auth/router_mfa.py | 2 +- src/api/auth/session_router.py | 2 +- src/api/dhcp/router.py | 2 +- src/api/ldap_schema/__init__.py | 2 +- src/api/ldap_schema/adapters/object_class.py | 2 +- src/api/ldap_schema/schema.py | 2 +- src/api/main/dns_router.py | 2 +- src/api/main/krb5_router.py | 2 +- src/api/main/router.py | 2 +- src/api/main/schema.py | 2 +- src/api/network/schema.py | 2 +- src/api/password_policy/error_utils.py | 2 +- .../user_password_history_router.py | 2 +- src/api/shadow/router.py | 2 +- src/application/auth/setup_gateway.py | 4 ++-- src/application/auth/use_cases.py | 12 ++++++------ src/application/auth/utils.py | 2 +- src/application/dns/dns_gateway.py | 2 +- src/application/dns/use_cases.py | 4 ++-- src/application/filter_interpreter.py | 4 ++-- src/application/identity/provider.py | 6 +++--- src/application/identity/utils.py | 2 +- src/application/kerberos/ldap_structure.py | 2 +- src/application/kerberos/service.py | 4 ++-- src/application/ldap_requests/add.py | 6 +++--- src/application/ldap_requests/base.py | 8 +++----- .../ldap_requests/bind_methods/base.py | 2 +- .../ldap_requests/bind_methods/sasl_gssapi.py | 4 ++-- .../ldap_requests/bind_methods/sasl_plain.py | 2 +- .../ldap_requests/bind_methods/sasl_spnego.py | 2 +- .../ldap_requests/bind_methods/simple.py | 2 +- src/application/ldap_requests/delete.py | 9 +++------ src/application/ldap_requests/extended.py | 2 +- src/application/ldap_requests/modify.py | 10 +++++----- src/application/ldap_requests/modify_dn.py | 4 ++-- src/application/ldap_requests/search.py | 18 +++++++++--------- .../ldap_schema/attribute_type_dao.py | 2 +- .../ldap_schema/attribute_type_use_case.py | 2 +- .../ldap_schema/attribute_value_validator.py | 2 +- src/application/ldap_schema/entity_type_dao.py | 2 +- .../ldap_schema/entity_type_use_case.py | 4 ++-- .../ldap_schema/object_class_dao.py | 2 +- .../ldap_schema/object_class_use_case.py | 2 +- src/application/permissions_checker.py | 2 +- .../policies/audit/audit_use_case.py | 2 +- src/application/policies/audit/dataclasses.py | 2 +- .../policies/audit/events/factory.py | 2 +- .../policies/audit/events/handler.py | 2 +- .../policies/audit/events/normalizer.py | 2 +- .../policies/audit/events/sender.py | 2 +- .../audit/events/service_senders/base.py | 6 ++---- .../service_senders/rfc5424_serializer.py | 4 +--- .../audit/events/service_senders/syslog.py | 4 +--- src/application/policies/audit/monitor.py | 8 +++----- .../policies/password/ban_word_repository.py | 2 +- src/application/policies/password/dao.py | 4 ++-- src/application/policies/password/use_cases.py | 4 ++-- src/application/roles/access_manager.py | 2 +- src/application/roles/ace_dao.py | 4 ++-- src/application/roles/dataclasses.py | 2 +- src/application/roles/role_dao.py | 2 +- src/application/roles/role_use_case.py | 4 ++-- src/application/rootdse/netlogon.py | 2 +- src/application/rootdse/reader.py | 2 +- src/application/server.py | 2 +- src/application/session_storage/repository.py | 2 +- src/application/udp_server.py | 2 +- src/application/user_account_control.py | 2 +- src/application/utils/queries.py | 4 ++-- src/domain/__init__.py | 2 +- src/extra/scripts/check_ldap_principal.py | 2 +- src/extra/scripts/principal_block_user_sync.py | 4 ++-- src/extra/scripts/uac_sync.py | 4 ++-- src/extra/scripts/update_krb5_config.py | 2 +- src/multidirectory.py | 12 ++++++------ src/schedule.py | 2 +- tests/conftest.py | 14 +++++++------- tests/constants.py | 2 +- tests/test_api/test_audit/test_router.py | 2 +- .../test_auth/test_identity_provider.py | 2 +- tests/test_api/test_auth/test_router.py | 10 ++++++++-- tests/test_api/test_auth/test_sessions.py | 2 +- tests/test_api/test_dhcp/test_adapter.py | 2 +- tests/test_api/test_main/conftest.py | 2 +- tests/test_api/test_main/test_kadmin.py | 2 +- tests/test_api/test_main/test_multifactor.py | 2 +- .../test_api/test_main/test_router/test_add.py | 2 +- .../test_main/test_router/test_search.py | 2 +- .../test_api/test_password_policy/conftest.py | 6 ++---- tests/test_api/test_shadow/conftest.py | 2 +- .../test_api/test_web_permissions/conftest.py | 4 ++-- .../test_permission_checker.py | 4 ++-- .../test_ldap/policies/test_audit/conftest.py | 2 +- .../policies/test_audit/test_service.py | 2 +- .../test_network/test_pool_client_handler.py | 4 ++-- .../policies/test_network/test_use_case.py | 2 +- .../policies/test_password/conftest.py | 2 +- .../test_entity_level_access.py | 2 +- .../test_access_manager/test_modify_access.py | 4 ++-- .../test_access_manager/test_search_access.py | 2 +- .../test_attribute_value_validator.py | 2 +- tests/test_ldap/test_bind.py | 4 ++-- .../test_container_restrictions/conftest.py | 2 +- .../test_container_subcontainers.py | 2 +- tests/test_ldap/test_ldap3_definition_parse.py | 2 +- tests/test_ldap/test_roles/conftest.py | 2 +- .../test_roles/test_multiple_access.py | 6 +++--- tests/test_ldap/test_roles/test_search.py | 4 ++-- tests/test_ldap/test_util/test_add.py | 6 +++--- tests/test_ldap/test_util/test_delete.py | 6 +++--- tests/test_ldap/test_util/test_modify.py | 6 +++--- tests/test_ldap/test_util/test_search.py | 6 +++--- tests/test_shedule.py | 2 +- 131 files changed, 220 insertions(+), 229 deletions(-) diff --git a/src/alembic/env.py b/src/alembic/env.py index 5c09b3b89..2611c5c70 100644 --- a/src/alembic/env.py +++ b/src/alembic/env.py @@ -9,6 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection from config import Settings +from infrastructure.pg.tables import metadata from ioc import ( HTTPProvider, MainProvider, @@ -16,7 +17,6 @@ MFAProvider, MigrationProvider, ) -from infrastructure.pg.tables import metadata # this is the Alembic Config object, which provides # access to the values within the .ini file in use. diff --git a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py index ff33b5963..27d8b9910 100644 --- a/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py +++ b/src/alembic/versions/01f3f05a5b11_add_primary_group_id.py @@ -14,10 +14,6 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session, selectinload -from constants import DOMAIN_COMPUTERS_GROUP_NAME -from domain.entities import Attribute, Directory, EntityType, Group -from enums import EntityTypeNames -from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) @@ -29,6 +25,10 @@ get_filter_from_path, get_search_path, ) +from constants import DOMAIN_COMPUTERS_GROUP_NAME +from domain.entities import Attribute, Directory, EntityType, Group +from enums import EntityTypeNames +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/05ddc0bd562a_add_roles.py b/src/alembic/versions/05ddc0bd562a_add_roles.py index 459822d03..70574bac4 100644 --- a/src/alembic/versions/05ddc0bd562a_add_roles.py +++ b/src/alembic/versions/05ddc0bd562a_add_roles.py @@ -11,10 +11,10 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from domain.entities import Directory, Group -from extra.alembic_utils import temporary_stub_column from application.roles.role_use_case import RoleUseCase from application.utils.queries import get_base_directories +from domain.entities import Directory, Group +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/275222846605_initial_ldap_schema.py b/src/alembic/versions/275222846605_initial_ldap_schema.py index 7a262a965..14e5b466b 100644 --- a/src/alembic/versions/275222846605_initial_ldap_schema.py +++ b/src/alembic/versions/275222846605_initial_ldap_schema.py @@ -16,13 +16,13 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session, selectinload -from domain.entities import Attribute, AttributeType, ObjectClass -from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.dto import AttributeTypeDTO from application.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) +from domain.entities import Attribute, AttributeType, ObjectClass +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index 6def92a78..24ec7a0fa 100644 --- a/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/src/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -13,10 +13,10 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from domain.entities import Attribute, Directory -from extra.alembic_utils import temporary_stub_column from application.objects import UserAccountControlFlag from application.utils.helpers import create_integer_hash +from domain.entities import Attribute, Directory +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/6f8fe2548893_fix_read_only.py b/src/alembic/versions/6f8fe2548893_fix_read_only.py index a681d641b..86a2851cf 100644 --- a/src/alembic/versions/6f8fe2548893_fix_read_only.py +++ b/src/alembic/versions/6f8fe2548893_fix_read_only.py @@ -12,10 +12,10 @@ from sqlalchemy import delete, select, update from sqlalchemy.orm import Session +from application.utils.helpers import create_integer_hash from constants import DOMAIN_USERS_GROUP_NAME from domain.entities import Attribute, Directory from extra.alembic_utils import temporary_stub_column -from application.utils.helpers import create_integer_hash # revision identifiers, used by Alembic. revision = "6f8fe2548893" diff --git a/src/alembic/versions/71e642808369_add_directory_is_system.py b/src/alembic/versions/71e642808369_add_directory_is_system.py index 0677c5270..ddfd11f07 100644 --- a/src/alembic/versions/71e642808369_add_directory_is_system.py +++ b/src/alembic/versions/71e642808369_add_directory_is_system.py @@ -13,6 +13,7 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session +from application.utils.queries import get_base_directories from constants import ( DOMAIN_ADMIN_GROUP_NAME, DOMAIN_COMPUTERS_GROUP_NAME, @@ -20,7 +21,6 @@ READ_ONLY_GROUP_NAME, ) from domain.entities import Directory -from application.utils.queries import get_base_directories from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py index 71102d9bb..99c36e915 100644 --- a/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py +++ b/src/alembic/versions/8164b4a9e1f1_add_ou_computers.py @@ -12,10 +12,10 @@ from sqlalchemy import delete, exists, select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from domain.entities import Directory -from extra.alembic_utils import temporary_stub_column from application.roles.role_use_case import RoleUseCase from application.utils.queries import get_base_directories +from domain.entities import Directory +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py index c2d5bdc93..c11c0bfd1 100644 --- a/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py +++ b/src/alembic/versions/ad52bc16b87d_extend_password_policy_for_api.py @@ -12,10 +12,10 @@ from sqlalchemy import update from sqlalchemy.orm import Session -from domain.entities import PasswordPolicy from application.policies.password.dataclasses import ( DefaultDomainPasswordPolicyPreset, ) +from domain.entities import PasswordPolicy # revision identifiers, used by Alembic. revision: None | str = "ad52bc16b87d" diff --git a/src/alembic/versions/ba78cef9700a_initial_entity_type.py b/src/alembic/versions/ba78cef9700a_initial_entity_type.py index d22c2f9ec..d450807c7 100644 --- a/src/alembic/versions/ba78cef9700a_initial_entity_type.py +++ b/src/alembic/versions/ba78cef9700a_initial_entity_type.py @@ -13,13 +13,13 @@ from sqlalchemy.dialects import postgresql from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from constants import ENTITY_TYPE_DATAS -from domain.entities import Attribute, Directory, User -from extra.alembic_utils import temporary_stub_column from application.ldap_schema.dto import EntityTypeDTO from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.ldap_schema.entity_type_use_case import EntityTypeUseCase from application.utils.queries import get_base_directories +from constants import ENTITY_TYPE_DATAS +from domain.entities import Attribute, Directory, User +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index 0072853ed..6ee6cb690 100644 --- a/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/src/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -12,11 +12,11 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload -from domain.entities import Attribute, Directory, NetworkPolicy -from extra.alembic_utils import temporary_stub_column from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.utils.helpers import create_integer_hash from application.utils.queries import get_base_directories +from domain.entities import Attribute, Directory, NetworkPolicy +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py index 69afed002..1f7b1dc46 100644 --- a/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py +++ b/src/alembic/versions/c5a9b3f2e8d7_add_contact_object_class.py @@ -11,11 +11,11 @@ from sqlalchemy import delete from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from domain.entities import EntityType -from enums import EntityTypeNames from application.ldap_schema.dto import EntityTypeDTO from application.ldap_schema.entity_type_use_case import EntityTypeUseCase from application.utils.queries import get_base_directories +from domain.entities import EntityType +from enums import EntityTypeNames from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py index 40b639549..0c3dd4ece 100644 --- a/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py +++ b/src/alembic/versions/dafg3a4b22ab_add_preauth_princ.py @@ -11,9 +11,9 @@ from dishka import AsyncContainer from sqlalchemy.orm import Session +from application.kerberos import KERBEROS_STATE_NAME from domain.entities import Attribute, CatalogueSetting, User from extra.alembic_utils import temporary_stub_column -from application.kerberos import KERBEROS_STATE_NAME from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py index 1c6ce94a2..a097c0b7b 100644 --- a/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py +++ b/src/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py @@ -13,10 +13,10 @@ from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import Session -from domain.entities import PasswordPolicy from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, ) +from domain.entities import PasswordPolicy # revision identifiers, used by Alembic. revision: None | str = "df4c52a613e5" diff --git a/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py b/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py index 4b517fb8c..56864965e 100644 --- a/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py +++ b/src/alembic/versions/e4d6d99d32bd_add_audit_policies.py @@ -14,12 +14,12 @@ from sqlalchemy.dialects import postgresql from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from extra.alembic_utils import temporary_stub_column from application.policies.audit.audit_use_case import AuditUseCase from application.policies.audit.destination_dao import AuditDestinationDAO from application.policies.audit.events.managers import RawAuditManager from application.policies.audit.policies_dao import AuditPoliciesDAO from application.utils.queries import get_base_directories +from extra.alembic_utils import temporary_stub_column # revision identifiers, used by Alembic. revision = "e4d6d99d32bd" diff --git a/src/alembic/versions/fafc3d0b11ec_.py b/src/alembic/versions/fafc3d0b11ec_.py index c3d1a492e..22c63dd7d 100644 --- a/src/alembic/versions/fafc3d0b11ec_.py +++ b/src/alembic/versions/fafc3d0b11ec_.py @@ -13,8 +13,6 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession -from domain.entities import Directory -from extra.alembic_utils import temporary_stub_column from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) @@ -23,6 +21,8 @@ get_base_directories, get_search_path, ) +from domain.entities import Directory +from extra.alembic_utils import temporary_stub_column from infrastructure.pg.tables import queryable_attr as qa # revision identifiers, used by Alembic. diff --git a/src/api/audit/router.py b/src/api/audit/router.py index 3b98ee1e4..a36e25451 100644 --- a/src/api/audit/router.py +++ b/src/api/audit/router.py @@ -16,7 +16,6 @@ DomainErrorTranslator, ) from api.utils import require_master_db -from enums import DomainCodes from application.policies.audit.exception import ( AuditAlreadyExistsError, AuditNotFoundError, @@ -27,6 +26,7 @@ AuditPolicyResponse, AuditPolicySchemaRequest, ) +from enums import DomainCodes from .adapter import AuditPoliciesAdapter diff --git a/src/api/auth/router_auth.py b/src/api/auth/router_auth.py index 005c2ad20..bd639759e 100644 --- a/src/api/auth/router_auth.py +++ b/src/api/auth/router_auth.py @@ -20,7 +20,6 @@ DomainErrorTranslator, ) from api.utils import require_master_db -from enums import DomainCodes from application.auth.exceptions.mfa import ( MFAAPIError, MFAConnectError, @@ -44,6 +43,7 @@ ) from application.kerberos.exceptions import KRBAPIChangePasswordError from application.session_storage import SessionStorage +from enums import DomainCodes from .utils import verify_auth diff --git a/src/api/auth/router_mfa.py b/src/api/auth/router_mfa.py index 787077a73..7403c700e 100644 --- a/src/api/auth/router_mfa.py +++ b/src/api/auth/router_mfa.py @@ -25,7 +25,6 @@ DomainErrorTranslator, ) from api.utils import require_master_db -from enums import DomainCodes from application.auth.exceptions.mfa import ( ForbiddenError, InvalidCredentialsError, @@ -37,6 +36,7 @@ ) from application.auth.schemas import MFACreateRequest, MFAGetResponse from application.multifactor import MFA_HTTP_Creds, MFA_LDAP_Creds +from enums import DomainCodes translator = DomainErrorTranslator(DomainCodes.MFA) diff --git a/src/api/auth/session_router.py b/src/api/auth/session_router.py index 150bab3ac..04d113231 100644 --- a/src/api/auth/session_router.py +++ b/src/api/auth/session_router.py @@ -10,8 +10,8 @@ DishkaErrorAwareRoute, DomainErrorTranslator, ) -from enums import DomainCodes from application.session_storage.exceptions import SessionUserNotFoundError +from enums import DomainCodes from .adapters.session_gateway import ( SessionContentResponseSchema, diff --git a/src/api/dhcp/router.py b/src/api/dhcp/router.py index be736540f..b9b7ec5c2 100644 --- a/src/api/dhcp/router.py +++ b/src/api/dhcp/router.py @@ -17,7 +17,6 @@ DishkaErrorAwareRoute, DomainErrorTranslator, ) -from enums import DomainCodes from application.dhcp.exceptions import ( DHCPAPIError, DHCPEntryAddError, @@ -38,6 +37,7 @@ DHCPSubnetSchemaAddRequest, DHCPSubnetSchemaResponse, ) +from enums import DomainCodes from .adapter import DHCPAdapter diff --git a/src/api/ldap_schema/__init__.py b/src/api/ldap_schema/__init__.py index 19361746b..1f57c8747 100644 --- a/src/api/ldap_schema/__init__.py +++ b/src/api/ldap_schema/__init__.py @@ -17,7 +17,6 @@ DishkaErrorAwareRoute, DomainErrorTranslator, ) -from enums import DomainCodes from application.ldap_schema.exceptions import ( AttributeTypeAlreadyExistsError, AttributeTypeCantModifyError, @@ -29,6 +28,7 @@ ObjectClassCantModifyError, ObjectClassNotFoundError, ) +from enums import DomainCodes LimitedListType = Annotated[ list[str], diff --git a/src/api/ldap_schema/adapters/object_class.py b/src/api/ldap_schema/adapters/object_class.py index 48f06fbe6..d239b2d26 100644 --- a/src/api/ldap_schema/adapters/object_class.py +++ b/src/api/ldap_schema/adapters/object_class.py @@ -16,10 +16,10 @@ ObjectClassSchema, ObjectClassUpdateSchema, ) -from enums import KindType from application.ldap_schema.constants import DEFAULT_OBJECT_CLASS_IS_SYSTEM from application.ldap_schema.dto import AttributeTypeDTO, ObjectClassDTO from application.ldap_schema.object_class_use_case import ObjectClassUseCase +from enums import KindType def _convert_update_schema_to_dto( diff --git a/src/api/ldap_schema/schema.py b/src/api/ldap_schema/schema.py index d0ed3088f..c8e5ed235 100644 --- a/src/api/ldap_schema/schema.py +++ b/src/api/ldap_schema/schema.py @@ -8,12 +8,12 @@ from pydantic import BaseModel, Field -from enums import EntityTypeNames, KindType from application.ldap_schema.constants import ( DEFAULT_ENTITY_TYPE_IS_SYSTEM, OID_REGEX_PATTERN, ) from application.utils.pagination import BasePaginationSchema +from enums import EntityTypeNames, KindType _IdT = TypeVar("_IdT", int, None) diff --git a/src/api/main/dns_router.py b/src/api/main/dns_router.py index 1ed800939..1945369d4 100644 --- a/src/api/main/dns_router.py +++ b/src/api/main/dns_router.py @@ -30,7 +30,6 @@ DNSServiceZoneUpdateRequest, ) from api.utils import require_master_db -from enums import DomainCodes from application.dns import ( DNSForwardServerStatus, DNSForwardZone, @@ -38,6 +37,7 @@ DNSServerParam, DNSZone, ) +from enums import DomainCodes translator = DomainErrorTranslator(DomainCodes.DNS) diff --git a/src/api/main/krb5_router.py b/src/api/main/krb5_router.py index 50055293a..b56dac423 100644 --- a/src/api/main/krb5_router.py +++ b/src/api/main/krb5_router.py @@ -25,7 +25,6 @@ from api.main.adapters.kerberos import KerberosFastAPIAdapter from api.main.schema import KerberosSetupRequest from api.utils import require_master_db -from enums import DomainCodes from application.dialogue import LDAPSession from application.kerberos import KerberosState from application.kerberos.exceptions import ( @@ -38,6 +37,7 @@ ) from application.ldap_requests.contexts import LDAPAddRequestContext from application.utils.const import EmailStr +from enums import DomainCodes from .utils import get_ldap_session diff --git a/src/api/main/router.py b/src/api/main/router.py index ed14705a9..bb7bb15f7 100644 --- a/src/api/main/router.py +++ b/src/api/main/router.py @@ -17,7 +17,6 @@ DomainErrorTranslator, ) from api.utils import require_master_db -from enums import DomainCodes from application.custom_requests.rename import RenameRequest from application.identity.exceptions import UnauthorizedError from application.ldap_requests import ( @@ -28,6 +27,7 @@ ) from application.ldap_responses import LDAPResult from application.utils.queries import set_or_update_primary_group +from enums import DomainCodes from .schema import ( PrimaryGroupRequest, diff --git a/src/api/main/schema.py b/src/api/main/schema.py index 8fbf117d1..a6c9afd99 100644 --- a/src/api/main/schema.py +++ b/src/api/main/schema.py @@ -11,7 +11,6 @@ from pydantic import BaseModel, Field, PrivateAttr, SecretStr from sqlalchemy.sql.elements import ColumnElement, UnaryExpression -from domain.entities import Directory from application.dns import DNSManagerState, DNSZoneParam, DNSZoneType from application.filter_interpreter import ( Filter, @@ -21,6 +20,7 @@ from application.ldap_requests import SearchRequest as LDAPSearchRequest from application.ldap_responses import SearchResultDone, SearchResultEntry from application.utils.const import GRANT_DN_STRING +from domain.entities import Directory class SearchRequest(LDAPSearchRequest): diff --git a/src/api/network/schema.py b/src/api/network/schema.py index 2d198a547..7a9565a4a 100644 --- a/src/api/network/schema.py +++ b/src/api/network/schema.py @@ -18,8 +18,8 @@ model_validator, ) -from enums import MFAFlags from application.utils.helpers import validate_entry +from enums import MFAFlags class IPRange(BaseModel): diff --git a/src/api/password_policy/error_utils.py b/src/api/password_policy/error_utils.py index 6a28e5b6e..c96cc64fc 100644 --- a/src/api/password_policy/error_utils.py +++ b/src/api/password_policy/error_utils.py @@ -8,7 +8,6 @@ from fastapi_error_map.rules import rule from api.error_routing import ERROR_MAP_TYPE, DomainErrorTranslator -from enums import DomainCodes from application.permissions_checker import AuthorizationError from application.policies.password.exceptions import ( PasswordBanWordWrongFileExtensionError, @@ -20,6 +19,7 @@ PasswordPolicyNotFoundError, PasswordPolicyPriorityError, ) +from enums import DomainCodes translator = DomainErrorTranslator(DomainCodes.PASSWORD_POLICY) diff --git a/src/api/password_policy/user_password_history_router.py b/src/api/password_policy/user_password_history_router.py index 782903506..f8d0015e1 100644 --- a/src/api/password_policy/user_password_history_router.py +++ b/src/api/password_policy/user_password_history_router.py @@ -19,11 +19,11 @@ ) from api.password_policy.adapter import UserPasswordHistoryResetFastAPIAdapter from api.utils import require_master_db -from enums import DomainCodes from application.identity.exceptions import ( AuthorizationError, UserNotFoundError, ) +from enums import DomainCodes translator = DomainErrorTranslator(DomainCodes.PASSWORD_POLICY) diff --git a/src/api/shadow/router.py b/src/api/shadow/router.py index fd44010d1..0935aa09b 100644 --- a/src/api/shadow/router.py +++ b/src/api/shadow/router.py @@ -18,7 +18,6 @@ DomainErrorTranslator, ) from api.utils import require_master_db -from enums import DomainCodes from application.auth.exceptions.mfa import ( AuthenticationError, InvalidCredentialsError, @@ -27,6 +26,7 @@ from application.policies.password.exceptions import PasswordPolicyError from application.rootdse.dto import DomainControllerInfo from application.rootdse.reader import DCInfoReader +from enums import DomainCodes from .adapter import ShadowAdapter diff --git a/src/application/auth/setup_gateway.py b/src/application/auth/setup_gateway.py index 14c1080c4..96b58903d 100644 --- a/src/application/auth/setup_gateway.py +++ b/src/application/auth/setup_gateway.py @@ -11,7 +11,6 @@ from sqlalchemy import exists, select from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import Attribute, Directory, Group, NetworkPolicy, User from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) @@ -19,8 +18,9 @@ from application.utils.async_cache import base_directories_cache from application.utils.helpers import create_object_sid, generate_domain_sid from application.utils.queries import get_domain_object_class -from password_utils import PasswordUtils +from domain.entities import Attribute, Directory, Group, NetworkPolicy, User from infrastructure.pg.tables import queryable_attr as qa +from password_utils import PasswordUtils class SetupGateway: diff --git a/src/application/auth/use_cases.py b/src/application/auth/use_cases.py index e2398d1a7..83bcc0a79 100644 --- a/src/application/auth/use_cases.py +++ b/src/application/auth/use_cases.py @@ -9,12 +9,6 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession -from constants import ( - DOMAIN_ADMIN_GROUP_NAME, - FIRST_SETUP_DATA, - USERS_CONTAINER_NAME, -) -from enums import SamAccountTypeCodes from application.auth.dto import SetupDTO from application.auth.setup_gateway import SetupGateway from application.identity.exceptions import ( @@ -26,6 +20,12 @@ from application.policies.password import PasswordPolicyUseCases from application.roles.role_use_case import RoleUseCase from application.utils.helpers import create_integer_hash, ft_now +from constants import ( + DOMAIN_ADMIN_GROUP_NAME, + FIRST_SETUP_DATA, + USERS_CONTAINER_NAME, +) +from enums import SamAccountTypeCodes class SetupUseCase: diff --git a/src/application/auth/utils.py b/src/application/auth/utils.py index 54f5e2370..26118b7c5 100644 --- a/src/application/auth/utils.py +++ b/src/application/auth/utils.py @@ -6,8 +6,8 @@ from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import User from application.utils.queries import get_user +from domain.entities import User from password_utils import PasswordUtils diff --git a/src/application/dns/dns_gateway.py b/src/application/dns/dns_gateway.py index 4ddb71996..6f345850c 100644 --- a/src/application/dns/dns_gateway.py +++ b/src/application/dns/dns_gateway.py @@ -9,7 +9,6 @@ from sqlalchemy import case, select, update from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import CatalogueSetting from application.dns.base import ( DNS_MANAGER_IP_ADDRESS_NAME, DNS_MANAGER_STATE_NAME, @@ -19,6 +18,7 @@ DNSManagerState, ) from application.dns.dto import DNSSettingDTO +from domain.entities import CatalogueSetting from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/dns/use_cases.py b/src/application/dns/use_cases.py index 43e64715c..510f185f9 100644 --- a/src/application/dns/use_cases.py +++ b/src/application/dns/use_cases.py @@ -8,8 +8,6 @@ from typing import ClassVar from abstract_service import AbstractService -from config import Settings -from enums import AuthorizationRules from application.dns.base import ( AbstractDNSManager, DNSForwardServerStatus, @@ -22,6 +20,8 @@ DNSZoneType, ) from application.dns.dns_gateway import DNSStateGateway +from config import Settings +from enums import AuthorizationRules class DNSUseCase(AbstractService): diff --git a/src/application/filter_interpreter.py b/src/application/filter_interpreter.py index e9aa80352..e940fec53 100644 --- a/src/application/filter_interpreter.py +++ b/src/application/filter_interpreter.py @@ -22,6 +22,8 @@ ) from sqlalchemy.sql.expression import false as sql_false +from application.utils.helpers import ft_to_dt +from application.utils.queries import get_path_filter, get_search_path from domain.entities import ( Attribute, AttributeType, @@ -30,8 +32,6 @@ Group, User, ) -from application.utils.helpers import ft_to_dt -from application.utils.queries import get_path_filter, get_search_path from infrastructure.pg.tables import ( directory_table, groups_table, diff --git a/src/application/identity/provider.py b/src/application/identity/provider.py index 90ef3b5b4..fe4bc9c57 100644 --- a/src/application/identity/provider.py +++ b/src/application/identity/provider.py @@ -6,9 +6,6 @@ from loguru import logger -from config import Settings -from domain.entities import User -from enums import AuthorizationRules from application.dialogue import UserSchema from application.identity.exceptions import UnauthorizedError from application.identity.provider_gateway import IdentityProviderGateway @@ -21,6 +18,9 @@ SessionStorageInvalidUserAgentError, SessionStorageMissingDataError, ) +from config import Settings +from domain.entities import User +from enums import AuthorizationRules class IdentityProvider: diff --git a/src/application/identity/utils.py b/src/application/identity/utils.py index 4fa26163d..2941a975e 100644 --- a/src/application/identity/utils.py +++ b/src/application/identity/utils.py @@ -9,8 +9,8 @@ from fastapi import HTTPException, Request, status from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import User from application.utils.queries import get_user +from domain.entities import User from password_utils import PasswordUtils diff --git a/src/application/kerberos/ldap_structure.py b/src/application/kerberos/ldap_structure.py index ed8ad38dd..43f19b658 100644 --- a/src/application/kerberos/ldap_structure.py +++ b/src/application/kerberos/ldap_structure.py @@ -7,13 +7,13 @@ from sqlalchemy import delete, or_, select from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import Directory from application.kerberos.exceptions import KerberosConflictError from application.ldap_requests import AddRequest from application.ldap_requests.contexts import LDAPAddRequestContext from application.roles.access_manager import AccessManager from application.roles.role_use_case import RoleUseCase from application.utils.queries import get_filter_from_path +from domain.entities import Directory from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/kerberos/service.py b/src/application/kerberos/service.py index c7e18b838..8c1e64474 100644 --- a/src/application/kerberos/service.py +++ b/src/application/kerberos/service.py @@ -13,8 +13,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from config import Settings -from enums import AuthorizationRules from application.auth.utils import authenticate_user from application.dialogue import LDAPSession, UserSchema from application.kerberos.exceptions import ( @@ -27,6 +25,8 @@ from application.ldap_requests.contexts import LDAPAddRequestContext from application.objects import UserAccountControlFlag from application.utils.queries import get_base_directories, get_dn_by_id +from config import Settings +from enums import AuthorizationRules from password_utils import PasswordUtils from .base import AbstractKadmin diff --git a/src/application/ldap_requests/add.py b/src/application/ldap_requests/add.py index 62b0aa133..d41d85810 100644 --- a/src/application/ldap_requests/add.py +++ b/src/application/ldap_requests/add.py @@ -11,9 +11,6 @@ from sqlalchemy import select from sqlalchemy.exc import IntegrityError -from constants import DOMAIN_COMPUTERS_GROUP_NAME, DOMAIN_USERS_GROUP_NAME -from domain.entities import Attribute, Directory, Group, User -from enums import AceType, EntityTypeNames, SamAccountTypeCodes from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( KRBAPIAddPrincipalError, @@ -43,6 +40,9 @@ get_search_path, validate_entry, ) +from constants import DOMAIN_COMPUTERS_GROUP_NAME, DOMAIN_USERS_GROUP_NAME +from domain.entities import Attribute, Directory, Group, User +from enums import AceType, EntityTypeNames, SamAccountTypeCodes from .base import BaseRequest from .contexts import LDAPAddRequestContext diff --git a/src/application/ldap_requests/base.py b/src/application/ldap_requests/base.py index 9ed4ec21a..5125ef252 100644 --- a/src/application/ldap_requests/base.py +++ b/src/application/ldap_requests/base.py @@ -20,18 +20,16 @@ from pydantic import BaseModel from sqlalchemy.exc import OperationalError -from config import Settings -from domain.entities import Directory from application.dependency import resolve_deps from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes from application.ldap_responses import BaseResponse, LDAPResult from application.objects import ProtocolRequests from application.policies.audit.audit_use_case import AuditUseCase -from application.policies.audit.events.factory import ( - RawAuditEventBuilderRedis, -) +from application.policies.audit.events.factory import RawAuditEventBuilderRedis from application.utils.helpers import get_class_name +from config import Settings +from domain.entities import Directory log_api = logger.bind(name="admin") diff --git a/src/application/ldap_requests/bind_methods/base.py b/src/application/ldap_requests/bind_methods/base.py index 64b043c3b..255064b9b 100644 --- a/src/application/ldap_requests/bind_methods/base.py +++ b/src/application/ldap_requests/bind_methods/base.py @@ -11,10 +11,10 @@ from pydantic import BaseModel, Field, SecretStr from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import User from application.asn1parser import ASN1Row from application.ldap_codes import LDAPCodes from application.ldap_responses import BindResponse +from domain.entities import User from password_utils import PasswordUtils diff --git a/src/application/ldap_requests/bind_methods/sasl_gssapi.py b/src/application/ldap_requests/bind_methods/sasl_gssapi.py index 3e464ee7b..7630e0989 100644 --- a/src/application/ldap_requests/bind_methods/sasl_gssapi.py +++ b/src/application/ldap_requests/bind_methods/sasl_gssapi.py @@ -11,13 +11,13 @@ from pydantic import Field, SecretStr from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings -from domain.entities import User from application.asn1parser import ASN1Row from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes from application.ldap_responses import BindResponse from application.utils.queries import get_base_directories, get_user +from config import Settings +from domain.entities import User from password_utils import PasswordUtils from .base import ( diff --git a/src/application/ldap_requests/bind_methods/sasl_plain.py b/src/application/ldap_requests/bind_methods/sasl_plain.py index 27454853a..90fc155b9 100644 --- a/src/application/ldap_requests/bind_methods/sasl_plain.py +++ b/src/application/ldap_requests/bind_methods/sasl_plain.py @@ -8,9 +8,9 @@ from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import User from application.asn1parser import ASN1Row from application.utils.queries import get_user +from domain.entities import User from password_utils import PasswordUtils from .base import SaslAuthentication, SASLMethod diff --git a/src/application/ldap_requests/bind_methods/sasl_spnego.py b/src/application/ldap_requests/bind_methods/sasl_spnego.py index e85e75da0..13a135522 100644 --- a/src/application/ldap_requests/bind_methods/sasl_spnego.py +++ b/src/application/ldap_requests/bind_methods/sasl_spnego.py @@ -8,10 +8,10 @@ from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes from application.ldap_responses import BindResponse +from config import Settings from .base import LDAPBindErrors, SASLMethod, get_bad_response from .sasl_gssapi import GSSAPISL, GSSAPIAuthStatus, SaslGSSAPIAuthentication diff --git a/src/application/ldap_requests/bind_methods/simple.py b/src/application/ldap_requests/bind_methods/simple.py index 661be3d79..18d40cc37 100644 --- a/src/application/ldap_requests/bind_methods/simple.py +++ b/src/application/ldap_requests/bind_methods/simple.py @@ -8,8 +8,8 @@ from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import User from application.utils.queries import get_user +from domain.entities import User from password_utils import PasswordUtils from .base import AbstractLDAPAuth diff --git a/src/application/ldap_requests/delete.py b/src/application/ldap_requests/delete.py index bba37a325..eb3b541d1 100644 --- a/src/application/ldap_requests/delete.py +++ b/src/application/ldap_requests/delete.py @@ -9,8 +9,6 @@ from sqlalchemy import delete, exists, select from sqlalchemy.orm import joinedload, selectinload -from domain.entities import Directory, Group -from enums import AceType from application.asn1parser import ASN1Row from application.kerberos.exceptions import ( KRBAPIConnectionError, @@ -18,10 +16,7 @@ KRBAPIPrincipalNotFoundError, ) from application.ldap_codes import LDAPCodes -from application.ldap_responses import ( - INVALID_ACCESS_RESPONSE, - DeleteResponse, -) +from application.ldap_responses import INVALID_ACCESS_RESPONSE, DeleteResponse from application.objects import ProtocolRequests from application.utils.helpers import is_dn_in_base_directory from application.utils.queries import ( @@ -30,6 +25,8 @@ is_computer, validate_entry, ) +from domain.entities import Directory, Group +from enums import AceType from infrastructure.pg.tables import Attribute, queryable_attr as qa from .base import BaseRequest diff --git a/src/application/ldap_requests/extended.py b/src/application/ldap_requests/extended.py index c9a99474d..430b4a7cb 100644 --- a/src/application/ldap_requests/extended.py +++ b/src/application/ldap_requests/extended.py @@ -12,7 +12,6 @@ from pydantic import BaseModel, SecretStr, SerializeAsAny from sqlalchemy import update -from domain.entities import Directory, User from application.asn1parser import LDAPOID, ASN1Row, asn1todict from application.kerberos.exceptions import ( KRBAPIChangePasswordError, @@ -34,6 +33,7 @@ ) from application.objects import ProtocolRequests from application.utils.queries import get_user +from domain.entities import Directory, User from .base import BaseRequest from .contexts import LDAPExtendedRequestContext diff --git a/src/application/ldap_requests/modify.py b/src/application/ldap_requests/modify.py index 5d9ab0424..ab9ef78ca 100644 --- a/src/application/ldap_requests/modify.py +++ b/src/application/ldap_requests/modify.py @@ -14,10 +14,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload -from config import Settings -from constants import DOMAIN_ADMIN_GROUP_NAME -from domain.entities import Attribute, Directory, Group, User -from enums import AceType, EntityTypeNames from application.asn1parser import ASN1Row from application.dialogue import UserSchema from application.kerberos import AbstractKadmin, unlock_principal @@ -56,12 +52,16 @@ remove_disallowed_group_members, remove_from_group_membership, ) -from password_utils import PasswordUtils +from config import Settings +from constants import DOMAIN_ADMIN_GROUP_NAME +from domain.entities import Attribute, Directory, Group, User +from enums import AceType, EntityTypeNames from infrastructure.pg.tables import ( directory_memberships_table, directory_table, queryable_attr as qa, ) +from password_utils import PasswordUtils from .base import BaseRequest from .contexts import LDAPModifyRequestContext diff --git a/src/application/ldap_requests/modify_dn.py b/src/application/ldap_requests/modify_dn.py index 513189981..446c63db4 100644 --- a/src/application/ldap_requests/modify_dn.py +++ b/src/application/ldap_requests/modify_dn.py @@ -10,8 +10,6 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import joinedload, selectinload -from domain.entities import AccessControlEntry, Attribute, Directory -from enums import AceType from application.asn1parser import ASN1Row from application.ldap_codes import LDAPCodes from application.ldap_responses import ( @@ -20,6 +18,8 @@ ) from application.objects import ProtocolRequests from application.utils.queries import get_filter_from_path, validate_entry +from domain.entities import AccessControlEntry, Attribute, Directory +from enums import AceType from infrastructure.pg.tables import ( ace_directory_memberships_table, queryable_attr as qa, diff --git a/src/application/ldap_requests/search.py b/src/application/ldap_requests/search.py index a245f26d7..13e8d582e 100644 --- a/src/application/ldap_requests/search.py +++ b/src/application/ldap_requests/search.py @@ -23,15 +23,6 @@ from sqlalchemy.sql.elements import ColumnElement, UnaryExpression from sqlalchemy.sql.expression import Select -from domain.entities import ( - Attribute, - AttributeType, - Directory, - Group, - ObjectClass, - User, -) -from enums import AceType from application.asn1parser import ASN1Row from application.dialogue import UserSchema from application.filter_interpreter import ( @@ -61,6 +52,15 @@ get_path_filter, get_search_path, ) +from domain.entities import ( + Attribute, + AttributeType, + Directory, + Group, + ObjectClass, + User, +) +from enums import AceType from infrastructure.pg.tables import queryable_attr as qa from .base import BaseRequest diff --git a/src/application/ldap_schema/attribute_type_dao.py b/src/application/ldap_schema/attribute_type_dao.py index 5cb4e0a97..fceb8e5b4 100644 --- a/src/application/ldap_schema/attribute_type_dao.py +++ b/src/application/ldap_schema/attribute_type_dao.py @@ -15,7 +15,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_db_gateway import AbstractDBGateWay -from domain.entities import AttributeType from application.ldap_schema.dto import AttributeTypeDTO from application.ldap_schema.exceptions import ( AttributeTypeAlreadyExistsError, @@ -26,6 +25,7 @@ PaginationResult, build_paginated_search_query, ) +from domain.entities import AttributeType from infrastructure.pg.tables import queryable_attr as qa _convert_model_to_dto = get_converter( diff --git a/src/application/ldap_schema/attribute_type_use_case.py b/src/application/ldap_schema/attribute_type_use_case.py index 56cf22af9..027c9aae7 100644 --- a/src/application/ldap_schema/attribute_type_use_case.py +++ b/src/application/ldap_schema/attribute_type_use_case.py @@ -7,11 +7,11 @@ from typing import ClassVar from abstract_service import AbstractService -from enums import AuthorizationRules from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.dto import AttributeTypeDTO from application.ldap_schema.object_class_dao import ObjectClassDAO from application.utils.pagination import PaginationParams, PaginationResult +from enums import AuthorizationRules class AttributeTypeUseCase(AbstractService): diff --git a/src/application/ldap_schema/attribute_value_validator.py b/src/application/ldap_schema/attribute_value_validator.py index 4fe553ab1..62594b677 100644 --- a/src/application/ldap_schema/attribute_value_validator.py +++ b/src/application/ldap_schema/attribute_value_validator.py @@ -8,9 +8,9 @@ from collections import defaultdict from typing import Callable, cast as tcast +from application.objects import PartialAttribute from domain.entities import Attribute, Directory, User from enums import EntityTypeNames -from application.objects import PartialAttribute type _AttrNameType = str type _ValueType = str diff --git a/src/application/ldap_schema/entity_type_dao.py b/src/application/ldap_schema/entity_type_dao.py index 25821f48c..0597c1b9b 100644 --- a/src/application/ldap_schema/entity_type_dao.py +++ b/src/application/ldap_schema/entity_type_dao.py @@ -15,7 +15,6 @@ from sqlalchemy.orm import selectinload from abstract_db_gateway import AbstractDBGateWay -from domain.entities import Attribute, Directory, EntityType, ObjectClass from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, AttributeValueValidatorError, @@ -32,6 +31,7 @@ PaginationResult, build_paginated_search_query, ) +from domain.entities import Attribute, Directory, EntityType, ObjectClass from infrastructure.pg.tables import queryable_attr as qa _convert = get_converter( diff --git a/src/application/ldap_schema/entity_type_use_case.py b/src/application/ldap_schema/entity_type_use_case.py index edf140007..c5bce79b9 100644 --- a/src/application/ldap_schema/entity_type_use_case.py +++ b/src/application/ldap_schema/entity_type_use_case.py @@ -7,8 +7,6 @@ from typing import ClassVar from abstract_service import AbstractService -from constants import ENTITY_TYPE_DATAS -from enums import AuthorizationRules, EntityTypeNames from application.ldap_schema.dto import EntityTypeDTO from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.ldap_schema.exceptions import ( @@ -17,6 +15,8 @@ ) from application.ldap_schema.object_class_dao import ObjectClassDAO from application.utils.pagination import PaginationParams, PaginationResult +from constants import ENTITY_TYPE_DATAS +from enums import AuthorizationRules, EntityTypeNames class EntityTypeUseCase(AbstractService): diff --git a/src/application/ldap_schema/object_class_dao.py b/src/application/ldap_schema/object_class_dao.py index ea9d58a9b..16111cec0 100644 --- a/src/application/ldap_schema/object_class_dao.py +++ b/src/application/ldap_schema/object_class_dao.py @@ -18,12 +18,12 @@ from sqlalchemy.orm import selectinload from abstract_db_gateway import AbstractDBGateWay -from domain.entities import AttributeType, EntityType, ObjectClass from application.utils.pagination import ( PaginationParams, PaginationResult, build_paginated_search_query, ) +from domain.entities import AttributeType, EntityType, ObjectClass from infrastructure.pg.tables import queryable_attr as qa from .dto import AttributeTypeDTO, ObjectClassDTO diff --git a/src/application/ldap_schema/object_class_use_case.py b/src/application/ldap_schema/object_class_use_case.py index 1f821a673..cbb7acab6 100644 --- a/src/application/ldap_schema/object_class_use_case.py +++ b/src/application/ldap_schema/object_class_use_case.py @@ -7,11 +7,11 @@ from typing import ClassVar from abstract_service import AbstractService -from enums import AuthorizationRules from application.ldap_schema.dto import AttributeTypeDTO, ObjectClassDTO from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.ldap_schema.object_class_dao import ObjectClassDAO from application.utils.pagination import PaginationParams, PaginationResult +from enums import AuthorizationRules class ObjectClassUseCase(AbstractService): diff --git a/src/application/permissions_checker.py b/src/application/permissions_checker.py index cdc707e56..394e71be3 100644 --- a/src/application/permissions_checker.py +++ b/src/application/permissions_checker.py @@ -3,9 +3,9 @@ from functools import wraps from typing import Awaitable, Callable, ParamSpec, TypeVar -from enums import AuthorizationRules from application.identity import IdentityProvider from application.identity.exceptions import AuthorizationError +from enums import AuthorizationRules _P = ParamSpec("_P") _R = TypeVar("_R") diff --git a/src/application/policies/audit/audit_use_case.py b/src/application/policies/audit/audit_use_case.py index 79c158609..22992a4fd 100644 --- a/src/application/policies/audit/audit_use_case.py +++ b/src/application/policies/audit/audit_use_case.py @@ -4,9 +4,9 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from domain.entities import AuditSeverity from application.asn1parser import LDAPOID from application.objects import OperationEvent, UserAccountControlFlag +from domain.entities import AuditSeverity from .dataclasses import ( AuditDestinationDTO, diff --git a/src/application/policies/audit/dataclasses.py b/src/application/policies/audit/dataclasses.py index 8875f866a..deaf9089a 100644 --- a/src/application/policies/audit/dataclasses.py +++ b/src/application/policies/audit/dataclasses.py @@ -6,12 +6,12 @@ from dataclasses import dataclass, field +from application.objects import OperationEvent from enums import ( AuditDestinationProtocolType, AuditDestinationServiceType, AuditSeverity, ) -from application.objects import OperationEvent @dataclass diff --git a/src/application/policies/audit/events/factory.py b/src/application/policies/audit/events/factory.py index 022932add..565d61ba9 100644 --- a/src/application/policies/audit/events/factory.py +++ b/src/application/policies/audit/events/factory.py @@ -7,8 +7,8 @@ from ipaddress import IPv4Address, IPv6Address from typing import TYPE_CHECKING, Any, Generic, TypeVar -from config import Settings from application.objects import OperationEvent +from config import Settings from .dataclasses import RawAuditEvent, RawAuditEventRedis diff --git a/src/application/policies/audit/events/handler.py b/src/application/policies/audit/events/handler.py index 8f80b907b..a12bca3bd 100644 --- a/src/application/policies/audit/events/handler.py +++ b/src/application/policies/audit/events/handler.py @@ -13,9 +13,9 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from domain.entities import AuditPolicy, AuditPolicyTrigger from application.ldap_codes import LDAPCodes from application.objects import OperationEvent +from domain.entities import AuditPolicy, AuditPolicyTrigger from infrastructure.pg.tables import queryable_attr as qa from .dataclasses import NormalizedAuditEvent, RawAuditEvent diff --git a/src/application/policies/audit/events/normalizer.py b/src/application/policies/audit/events/normalizer.py index 418e61bf7..fba4419a4 100644 --- a/src/application/policies/audit/events/normalizer.py +++ b/src/application/policies/audit/events/normalizer.py @@ -4,8 +4,8 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ -from domain.entities import AuditPolicyTrigger from application.objects import OperationEvent +from domain.entities import AuditPolicyTrigger from .dataclasses import NormalizedAuditEvent, RawAuditEvent diff --git a/src/application/policies/audit/events/sender.py b/src/application/policies/audit/events/sender.py index d1b64d285..bc7d03411 100644 --- a/src/application/policies/audit/events/sender.py +++ b/src/application/policies/audit/events/sender.py @@ -11,9 +11,9 @@ from loguru import logger from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings from application.policies.audit.audit_use_case import AuditUseCase from application.policies.audit.dataclasses import AuditDestinationDTO +from config import Settings from .dataclasses import NormalizedAuditEvent from .managers import NormalizedAuditManager diff --git a/src/application/policies/audit/events/service_senders/base.py b/src/application/policies/audit/events/service_senders/base.py index 6371a6a36..0fc4e73e7 100644 --- a/src/application/policies/audit/events/service_senders/base.py +++ b/src/application/policies/audit/events/service_senders/base.py @@ -6,11 +6,9 @@ from abc import ABC, abstractmethod -from enums import AuditDestinationServiceType from application.policies.audit.dataclasses import AuditDestinationDTO -from application.policies.audit.events.dataclasses import ( - NormalizedAuditEvent, -) +from application.policies.audit.events.dataclasses import NormalizedAuditEvent +from enums import AuditDestinationServiceType class AuditDestinationSenderABC(ABC): diff --git a/src/application/policies/audit/events/service_senders/rfc5424_serializer.py b/src/application/policies/audit/events/service_senders/rfc5424_serializer.py index 50e51bc0d..3947ef0ea 100644 --- a/src/application/policies/audit/events/service_senders/rfc5424_serializer.py +++ b/src/application/policies/audit/events/service_senders/rfc5424_serializer.py @@ -8,9 +8,7 @@ from datetime import datetime, timezone from typing import Any -from application.policies.audit.events.dataclasses import ( - NormalizedAuditEvent, -) +from application.policies.audit.events.dataclasses import NormalizedAuditEvent class RFC5424Serializer: diff --git a/src/application/policies/audit/events/service_senders/syslog.py b/src/application/policies/audit/events/service_senders/syslog.py index 337126a9f..332685af3 100644 --- a/src/application/policies/audit/events/service_senders/syslog.py +++ b/src/application/policies/audit/events/service_senders/syslog.py @@ -10,10 +10,8 @@ from loguru import logger +from application.policies.audit.events.dataclasses import NormalizedAuditEvent from enums import AuditDestinationProtocolType, AuditDestinationServiceType -from application.policies.audit.events.dataclasses import ( - NormalizedAuditEvent, -) from .base import AuditDestinationSenderABC from .rfc5424_serializer import RFC5424Serializer diff --git a/src/application/policies/audit/monitor.py b/src/application/policies/audit/monitor.py index 5a17c3244..9a0d755ae 100644 --- a/src/application/policies/audit/monitor.py +++ b/src/application/policies/audit/monitor.py @@ -12,8 +12,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from starlette.datastructures import URL -from config import Settings -from domain.entities import User from application.auth.exceptions.mfa import ( AuthenticationError, ForbiddenError, @@ -35,10 +33,10 @@ from application.multifactor import MFA_HTTP_Creds from application.objects import OperationEvent from application.policies.audit.audit_use_case import AuditUseCase -from application.policies.audit.events.factory import ( - RawAuditEventBuilderRedis, -) +from application.policies.audit.events.factory import RawAuditEventBuilderRedis from application.session_storage import SessionStorage +from config import Settings +from domain.entities import User _T = TypeVar("_T", bound=Callable) diff --git a/src/application/policies/password/ban_word_repository.py b/src/application/policies/password/ban_word_repository.py index de042a349..c607efe4f 100644 --- a/src/application/policies/password/ban_word_repository.py +++ b/src/application/policies/password/ban_word_repository.py @@ -10,10 +10,10 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import PasswordBanWord from application.policies.password.exceptions import ( PasswordBanWordFileHasDuplicatesError, ) +from domain.entities import PasswordBanWord from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/policies/password/dao.py b/src/application/policies/password/dao.py index 96d3b8837..98d0aa4a4 100644 --- a/src/application/policies/password/dao.py +++ b/src/application/policies/password/dao.py @@ -13,8 +13,6 @@ from sqlalchemy.orm import attributes, selectinload from abstract_db_gateway import AbstractDBGateWay -from domain.entities import Attribute, Group, PasswordPolicy, User -from enums import EntityTypeNames from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, AttributeValueValidatorError, @@ -34,6 +32,8 @@ get_filter_from_path, get_groups, ) +from domain.entities import Attribute, Group, PasswordPolicy, User +from enums import EntityTypeNames from infrastructure.pg.tables import queryable_attr as qa from .dataclasses import ( diff --git a/src/application/policies/password/use_cases.py b/src/application/policies/password/use_cases.py index 076d88f6d..76711c0f6 100644 --- a/src/application/policies/password/use_cases.py +++ b/src/application/policies/password/use_cases.py @@ -9,8 +9,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from domain.entities import User -from enums import AuthorizationRules from application.identity.exceptions import UserNotFoundError from application.policies.password.ban_word_repository import ( PasswordBanWordRepository, @@ -20,6 +18,8 @@ MIN_LENGTH_FOR_TRGM, ) from application.utils.queries import get_user +from domain.entities import User +from enums import AuthorizationRules from .dao import PasswordPolicyDAO from .dataclasses import PasswordPolicyDTO, PriorityT diff --git a/src/application/roles/access_manager.py b/src/application/roles/access_manager.py index 215abce1a..ba6a69721 100644 --- a/src/application/roles/access_manager.py +++ b/src/application/roles/access_manager.py @@ -9,9 +9,9 @@ from sqlalchemy import Select, and_ from sqlalchemy.orm import selectinload, with_loader_criteria +from application.objects import Changes, Operation from domain.entities import AccessControlEntry, Directory from enums import AceType, RoleScope -from application.objects import Changes, Operation from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/application/roles/ace_dao.py b/src/application/roles/ace_dao.py index 839389913..6f1d2612e 100644 --- a/src/application/roles/ace_dao.py +++ b/src/application/roles/ace_dao.py @@ -12,10 +12,10 @@ from sqlalchemy.orm import joinedload, selectinload from abstract_db_gateway import AbstractDBGateWay -from domain.entities import AccessControlEntry, Directory -from enums import AceType, RoleScope from application.utils.helpers import get_depth_by_dn from application.utils.queries import get_path_filter, get_search_path +from domain.entities import AccessControlEntry, Directory +from enums import AceType, RoleScope from infrastructure.pg.tables import queryable_attr as qa from .dataclasses import AccessControlEntryDTO diff --git a/src/application/roles/dataclasses.py b/src/application/roles/dataclasses.py index 8e1d40741..1ab479022 100644 --- a/src/application/roles/dataclasses.py +++ b/src/application/roles/dataclasses.py @@ -7,8 +7,8 @@ from dataclasses import dataclass from datetime import datetime -from enums import AceType, AuthorizationRules, RoleScope from application.utils.const import GRANT_DN_STRING +from enums import AceType, AuthorizationRules, RoleScope @dataclass diff --git a/src/application/roles/role_dao.py b/src/application/roles/role_dao.py index d70084e9a..1a8896a9a 100644 --- a/src/application/roles/role_dao.py +++ b/src/application/roles/role_dao.py @@ -11,9 +11,9 @@ from sqlalchemy.orm import joinedload, selectinload from abstract_db_gateway import AbstractDBGateWay +from application.utils.queries import get_groups from domain.entities import AccessControlEntry, Group, Role from enums import AuthorizationRules, RoleConstants -from application.utils.queries import get_groups from infrastructure.pg.tables import queryable_attr as qa from .ace_dao import _convert as ace_convert diff --git a/src/application/roles/role_use_case.py b/src/application/roles/role_use_case.py index 77108e73d..aba181644 100644 --- a/src/application/roles/role_use_case.py +++ b/src/application/roles/role_use_case.py @@ -6,10 +6,10 @@ from sqlalchemy import and_, insert, literal, or_, select -from domain.entities import AccessControlEntry, AceType, Directory, Role -from enums import AuthorizationRules, RoleConstants, RoleScope from application.kerberos.utils import get_system_container_dn from application.utils.queries import get_base_directories +from domain.entities import AccessControlEntry, AceType, Directory, Role +from enums import AuthorizationRules, RoleConstants, RoleScope from infrastructure.pg.tables import ( access_control_entries_table, ace_directory_memberships_table, diff --git a/src/application/rootdse/netlogon.py b/src/application/rootdse/netlogon.py index 3a929127a..6df3055fe 100644 --- a/src/application/rootdse/netlogon.py +++ b/src/application/rootdse/netlogon.py @@ -17,8 +17,8 @@ from enum import IntEnum, IntFlag from typing import Any, Self -from constants import DEFAULT_DC_POSTFIX from application.asn1parser import ASN1Row +from constants import DEFAULT_DC_POSTFIX _NL_DEFAULT_SITE = "Default-First-Site-Name" _ZERO_UUID = uuid.UUID(int=0) diff --git a/src/application/rootdse/reader.py b/src/application/rootdse/reader.py index 4e61caf63..b0e2d375b 100644 --- a/src/application/rootdse/reader.py +++ b/src/application/rootdse/reader.py @@ -6,9 +6,9 @@ from collections import defaultdict +from application.utils.helpers import get_generalized_now from config import Settings from constants import DEFAULT_DC_POSTFIX, UNC_PREFIX -from application.utils.helpers import get_generalized_now from .dto import DomainControllerInfo from .gw_protocol import DomainReadProtocol diff --git a/src/application/server.py b/src/application/server.py index 0254c776e..3d0df9e6a 100644 --- a/src/application/server.py +++ b/src/application/server.py @@ -19,10 +19,10 @@ from proxyprotocol.v2 import ProxyProtocolV2 from pydantic import ValidationError -from config import Settings from application import LDAPRequestMessage, LDAPSession from application.ldap_requests.bind_methods import GSSAPISL from application.policies.network import NetworkPolicyValidatorUseCase +from config import Settings from .data_logger import DataLogger diff --git a/src/application/session_storage/repository.py b/src/application/session_storage/repository.py index 658381226..a0a7ab744 100644 --- a/src/application/session_storage/repository.py +++ b/src/application/session_storage/repository.py @@ -9,10 +9,10 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService +from application.utils.queries import get_user, set_user_logon_attrs from config import Settings from domain.entities import User from enums import AuthorizationRules -from application.utils.queries import get_user, set_user_logon_attrs from .exceptions import SessionUserNotFoundError from .redis import SessionStorage diff --git a/src/application/udp_server.py b/src/application/udp_server.py index 86e20e45c..1cc477362 100644 --- a/src/application/udp_server.py +++ b/src/application/udp_server.py @@ -11,9 +11,9 @@ from loguru import logger from pydantic import ValidationError -from config import Settings from application import LDAPRequestMessage, LDAPSession from application.policies.network import NetworkPolicyValidatorUseCase +from config import Settings from .data_logger import DataLogger from .utils.udp import create_udp_socket diff --git a/src/application/user_account_control.py b/src/application/user_account_control.py index d9efa7191..fb4421548 100644 --- a/src/application/user_account_control.py +++ b/src/application/user_account_control.py @@ -9,11 +9,11 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import Attribute from application.objects import ( UserAccountControlFlag as UserAccountControlFlag, ) from application.utils.queries import get_user +from domain.entities import Attribute async def get_check_uac( diff --git a/src/application/utils/queries.py b/src/application/utils/queries.py index 283cb509d..ea8713006 100644 --- a/src/application/utils/queries.py +++ b/src/application/utils/queries.py @@ -15,12 +15,12 @@ from sqlalchemy.orm import InstrumentedAttribute, joinedload, selectinload from sqlalchemy.sql.expression import ColumnElement -from domain.entities import Attribute, Directory, Group, User -from enums import SamAccountTypeCodes from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, AttributeValueValidatorError, ) +from domain.entities import Attribute, Directory, Group, User +from enums import SamAccountTypeCodes from infrastructure.pg.tables import ( directory_memberships_table, directory_table, diff --git a/src/domain/__init__.py b/src/domain/__init__.py index 5f4b7ad5e..623b334b7 100644 --- a/src/domain/__init__.py +++ b/src/domain/__init__.py @@ -2,4 +2,4 @@ Copyright (c) 2026 MultiFactor License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE -""" \ No newline at end of file +""" diff --git a/src/extra/scripts/check_ldap_principal.py b/src/extra/scripts/check_ldap_principal.py index 37c4a76c2..0dbee7e53 100644 --- a/src/extra/scripts/check_ldap_principal.py +++ b/src/extra/scripts/check_ldap_principal.py @@ -9,13 +9,13 @@ from loguru import logger from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings from application.kerberos import ( AbstractKadmin, KerberosState, get_krb_server_state, ) from application.utils.queries import get_base_directories +from config import Settings async def check_ldap_principal( diff --git a/src/extra/scripts/principal_block_user_sync.py b/src/extra/scripts/principal_block_user_sync.py index 53b251efa..cd7cc7710 100644 --- a/src/extra/scripts/principal_block_user_sync.py +++ b/src/extra/scripts/principal_block_user_sync.py @@ -10,14 +10,14 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.sql import select -from config import Settings -from domain.entities import Attribute, Directory, User from application.objects import UserAccountControlFlag from application.user_account_control import get_check_uac from application.utils.queries import ( add_lock_and_expire_attributes, get_principal_directory, ) +from config import Settings +from domain.entities import Attribute, Directory, User async def principal_block_sync( diff --git a/src/extra/scripts/uac_sync.py b/src/extra/scripts/uac_sync.py index e20f01d64..2f7c84e3d 100644 --- a/src/extra/scripts/uac_sync.py +++ b/src/extra/scripts/uac_sync.py @@ -8,11 +8,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.sql import func, select -from config import Settings -from domain.entities import Attribute, User from application.kerberos import AbstractKadmin from application.objects import UserAccountControlFlag from application.utils.queries import add_lock_and_expire_attributes +from config import Settings +from domain.entities import Attribute, User from infrastructure.pg.tables import queryable_attr as qa diff --git a/src/extra/scripts/update_krb5_config.py b/src/extra/scripts/update_krb5_config.py index e7865b09f..2a57900f6 100644 --- a/src/extra/scripts/update_krb5_config.py +++ b/src/extra/scripts/update_krb5_config.py @@ -9,9 +9,9 @@ from loguru import logger from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings from application.kerberos.utils import get_system_container_dn from application.utils.queries import get_base_directories +from config import Settings KRB5_CONF_PATH = Path("/etc/krb5kdc/krb5.conf") KDC_CONF_PATH = Path("/etc/krb5kdc/kdc.conf") diff --git a/src/multidirectory.py b/src/multidirectory.py index d5d6b5280..d01a6cb9f 100644 --- a/src/multidirectory.py +++ b/src/multidirectory.py @@ -38,6 +38,12 @@ ) from api.exception_handlers import handle_auth_error, handle_db_connect_error from api.middlewares import proc_time_header_middleware, set_key_middleware +from application.dependency import resolve_deps +from application.identity.exceptions import UnauthorizedError +from application.policies.audit.events.handler import AuditEventHandler +from application.policies.audit.events.sender import AuditEventSenderManager +from application.server import PoolClientHandler, ServerLogger +from application.udp_server import CLDAPUDPServer from config import Settings from extra.dump_acme_certs import dump_acme_cert from ioc import ( @@ -49,12 +55,6 @@ MFACredsProvider, MFAProvider, ) -from application.dependency import resolve_deps -from application.identity.exceptions import UnauthorizedError -from application.policies.audit.events.handler import AuditEventHandler -from application.policies.audit.events.sender import AuditEventSenderManager -from application.server import PoolClientHandler, ServerLogger -from application.udp_server import CLDAPUDPServer from schedule import scheduler_factory diff --git a/src/schedule.py b/src/schedule.py index 06ad2e301..f26a256b5 100644 --- a/src/schedule.py +++ b/src/schedule.py @@ -6,6 +6,7 @@ from dishka import AsyncContainer, Scope, make_async_container from loguru import logger +from application.dependency import resolve_deps from config import Settings from extra.scripts.check_ldap_principal import check_ldap_principal from extra.scripts.principal_block_user_sync import principal_block_sync @@ -16,7 +17,6 @@ update_status_process_events, ) from ioc import MainProvider -from application.dependency import resolve_deps type task_type = Callable[..., Coroutine] diff --git a/tests/conftest.py b/tests/conftest.py index 57a708f50..a85e06192 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -32,7 +32,6 @@ from dishka.integrations.fastapi import setup_dishka from fastapi import FastAPI, Request, Response from loguru import logger -from multidirectory import _create_basic_app from sqlalchemy import schema, text from sqlalchemy.ext.asyncio import ( AsyncConnection, @@ -61,12 +60,6 @@ PasswordPolicyFastAPIAdapter, ) from api.shadow.adapter import ShadowAdapter -from authorization_provider_protocol import AuthorizationProviderProtocol -from config import Settings -from constants import ENTITY_TYPE_DATAS -from domain.entities import AttributeType -from enums import AuthorizationRules -from ioc import AuditRedisClient, MFACredsProvider, SessionStorageClient from application.auth import AuthManager, MFAManager from application.auth.setup_gateway import SetupGateway from application.auth.use_cases import SetupUseCase @@ -160,6 +153,13 @@ from application.session_storage import RedisSessionStorage, SessionStorage from application.session_storage.repository import SessionRepository from application.utils.queries import get_user +from authorization_provider_protocol import AuthorizationProviderProtocol +from config import Settings +from constants import ENTITY_TYPE_DATAS +from domain.entities import AttributeType +from enums import AuthorizationRules +from ioc import AuditRedisClient, MFACredsProvider, SessionStorageClient +from multidirectory import _create_basic_app from password_utils import PasswordUtils from repo.pg.master_gateway import PGMasterGateway from tests.constants import TEST_DATA diff --git a/tests/constants.py b/tests/constants.py index 965026af1..4120d9cd7 100644 --- a/tests/constants.py +++ b/tests/constants.py @@ -4,6 +4,7 @@ License: https://github.com/MultiDirectoryLab/MultiDirectory/blob/main/LICENSE """ +from application.objects import UserAccountControlFlag from constants import ( DOMAIN_ADMIN_GROUP_NAME, DOMAIN_COMPUTERS_GROUP_NAME, @@ -12,7 +13,6 @@ USERS_CONTAINER_NAME, ) from enums import SamAccountTypeCodes -from application.objects import UserAccountControlFlag TEST_DATA = [ { diff --git a/tests/test_api/test_audit/test_router.py b/tests/test_api/test_audit/test_router.py index d398aa800..2af1ea778 100644 --- a/tests/test_api/test_audit/test_router.py +++ b/tests/test_api/test_audit/test_router.py @@ -10,7 +10,6 @@ from fastapi import status from httpx import AsyncClient -from enums import AuditDestinationProtocolType, AuditDestinationServiceType from application.policies.audit.dataclasses import ( AuditDestinationDTO, AuditPolicyDTO, @@ -19,6 +18,7 @@ AuditDestinationSchemaRequest, AuditPolicySchemaRequest, ) +from enums import AuditDestinationProtocolType, AuditDestinationServiceType @pytest.mark.asyncio diff --git a/tests/test_api/test_auth/test_identity_provider.py b/tests/test_api/test_auth/test_identity_provider.py index 11c4d8c0c..2eafcab69 100644 --- a/tests/test_api/test_auth/test_identity_provider.py +++ b/tests/test_api/test_auth/test_identity_provider.py @@ -18,7 +18,6 @@ from starlette.requests import Request from api.auth.utils import get_ip_from_request, get_user_agent_from_request -from config import Settings from application.dialogue import UserSchema from application.identity import IdentityProvider from application.identity.exceptions import ErrorCodes, UnauthorizedError @@ -27,6 +26,7 @@ from application.session_storage.exceptions import ( SessionStorageInvalidDataError, ) +from config import Settings from tests.conftest import TestProvider diff --git a/tests/test_api/test_auth/test_router.py b/tests/test_api/test_auth/test_router.py index 37fd771a0..ff35f91f7 100644 --- a/tests/test_api/test_auth/test_router.py +++ b/tests/test_api/test_auth/test_router.py @@ -17,14 +17,20 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload -from domain.entities import CatalogueSetting, Directory, Group, NetworkPolicy, Role -from enums import AceType, MFAChallengeStatuses, MFAFlags, RoleScope from application.auth.utils import authenticate_user from application.kerberos import AbstractKadmin from application.ldap_codes import LDAPCodes from application.ldap_requests.modify import Operation from application.session_storage import SessionStorage from application.utils.queries import get_filter_from_path +from domain.entities import ( + CatalogueSetting, + Directory, + Group, + NetworkPolicy, + Role, +) +from enums import AceType, MFAChallengeStatuses, MFAFlags, RoleScope from password_utils import PasswordUtils from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_api/test_auth/test_sessions.py b/tests/test_api/test_auth/test_sessions.py index 7eb9f71fe..28c243be1 100644 --- a/tests/test_api/test_auth/test_sessions.py +++ b/tests/test_api/test_auth/test_sessions.py @@ -7,11 +7,11 @@ from httpx import AsyncClient from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings from application.ldap_codes import LDAPCodes from application.ldap_requests.modify import Operation from application.session_storage import SessionStorage from application.utils.queries import get_user +from config import Settings from tests.conftest import TestCreds diff --git a/tests/test_api/test_dhcp/test_adapter.py b/tests/test_api/test_dhcp/test_adapter.py index c147a3c25..a919d776e 100644 --- a/tests/test_api/test_dhcp/test_adapter.py +++ b/tests/test_api/test_dhcp/test_adapter.py @@ -10,7 +10,6 @@ import pytest from api.dhcp.adapter import DHCPAdapter -from authorization_provider_protocol import AuthorizationProviderProtocol from application.dhcp.dataclasses import ( DHCPLease, DHCPOptionData, @@ -23,6 +22,7 @@ DHCPReservationSchemaRequest, DHCPSubnetSchemaAddRequest, ) +from authorization_provider_protocol import AuthorizationProviderProtocol @pytest.fixture diff --git a/tests/test_api/test_main/conftest.py b/tests/test_api/test_main/conftest.py index 921adca22..76f0ed9eb 100644 --- a/tests/test_api/test_main/conftest.py +++ b/tests/test_api/test_main/conftest.py @@ -9,7 +9,6 @@ from httpx import ASGITransport, AsyncClient from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import CatalogueSetting from application.dns import ( DNS_MANAGER_IP_ADDRESS_NAME, DNS_MANAGER_STATE_NAME, @@ -18,6 +17,7 @@ ) from application.ldap_codes import LDAPCodes from application.ldap_requests.modify import Operation +from domain.entities import CatalogueSetting @pytest_asyncio.fixture(scope="function") diff --git a/tests/test_api/test_main/test_kadmin.py b/tests/test_api/test_main/test_kadmin.py index 5daecf642..0d5077165 100644 --- a/tests/test_api/test_main/test_kadmin.py +++ b/tests/test_api/test_main/test_kadmin.py @@ -9,7 +9,6 @@ from fastapi import status from httpx import AsyncClient -from config import Settings from application.kerberos import AbstractKadmin, KerberosState from application.kerberos.exceptions import ( KRBAPIChangePasswordError, @@ -17,6 +16,7 @@ ) from application.ldap_requests.bind import LDAPCodes, SimpleAuthentication from application.ldap_requests.contexts import LDAPBindRequestContext +from config import Settings from password_utils import PasswordUtils from tests.conftest import MutePolicyBindRequest, TestCreds diff --git a/tests/test_api/test_main/test_multifactor.py b/tests/test_api/test_main/test_multifactor.py index 04ab56bcd..aacea6a2c 100644 --- a/tests/test_api/test_main/test_multifactor.py +++ b/tests/test_api/test_main/test_multifactor.py @@ -5,8 +5,8 @@ import httpx import pytest -from config import Settings from application.multifactor import MultifactorAPI +from config import Settings @pytest.mark.asyncio diff --git a/tests/test_api/test_main/test_router/test_add.py b/tests/test_api/test_main/test_router/test_add.py index b4c63eea8..a1e428000 100644 --- a/tests/test_api/test_main/test_router/test_add.py +++ b/tests/test_api/test_main/test_router/test_add.py @@ -8,9 +8,9 @@ from fastapi import status from httpx import AsyncClient -from enums import SamAccountTypeCodes from application.ldap_codes import LDAPCodes from application.objects import UserAccountControlFlag +from enums import SamAccountTypeCodes from tests.api_datasets import test_api_forbidden_chars_in_attr_value diff --git a/tests/test_api/test_main/test_router/test_search.py b/tests/test_api/test_main/test_router/test_search.py index 6f771dadf..0a6729210 100644 --- a/tests/test_api/test_main/test_router/test_search.py +++ b/tests/test_api/test_main/test_router/test_search.py @@ -7,9 +7,9 @@ import pytest from httpx import AsyncClient -from enums import EntityTypeNames from application.ldap_codes import LDAPCodes from application.ldap_requests.modify import Operation +from enums import EntityTypeNames from tests.search_request_datasets import ( test_search_by_rule_anr_dataset, test_search_by_rule_bit_and_dataset, diff --git a/tests/test_api/test_password_policy/conftest.py b/tests/test_api/test_password_policy/conftest.py index 3331666b6..aa2f43b18 100644 --- a/tests/test_api/test_password_policy/conftest.py +++ b/tests/test_api/test_password_policy/conftest.py @@ -20,12 +20,10 @@ PasswordPolicyFastAPIAdapter, UserPasswordHistoryResetFastAPIAdapter, ) -from config import Settings from application.policies.password import PasswordPolicyUseCases from application.policies.password.dataclasses import PasswordPolicyDTO -from application.policies.password.use_cases import ( - UserPasswordHistoryUseCases, -) +from application.policies.password.use_cases import UserPasswordHistoryUseCases +from config import Settings from tests.conftest import TestProvider diff --git a/tests/test_api/test_shadow/conftest.py b/tests/test_api/test_shadow/conftest.py index 17e9ef67b..47361ecaf 100644 --- a/tests/test_api/test_shadow/conftest.py +++ b/tests/test_api/test_shadow/conftest.py @@ -10,8 +10,8 @@ from pydantic import BaseModel from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import CatalogueSetting from application.ldap_codes import LDAPCodes +from domain.entities import CatalogueSetting class ProxyRequestModel(BaseModel): diff --git a/tests/test_api/test_web_permissions/conftest.py b/tests/test_api/test_web_permissions/conftest.py index 848bac18f..44151a595 100644 --- a/tests/test_api/test_web_permissions/conftest.py +++ b/tests/test_api/test_web_permissions/conftest.py @@ -18,12 +18,12 @@ ) from abstract_service import AbstractService -from authorization_provider_protocol import AuthorizationProviderProtocol -from config import Settings from application.auth.auth_manager import AuthManager from application.dhcp.base import AbstractDHCPManager from application.dhcp.stub import StubDHCPManager from application.policies.audit.service import AuditService +from authorization_provider_protocol import AuthorizationProviderProtocol +from config import Settings from tests.conftest import TestProvider diff --git a/tests/test_api/test_web_permissions/test_permission_checker.py b/tests/test_api/test_web_permissions/test_permission_checker.py index 84faa12cd..62adaf8c8 100644 --- a/tests/test_api/test_web_permissions/test_permission_checker.py +++ b/tests/test_api/test_web_permissions/test_permission_checker.py @@ -7,11 +7,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from abstract_service import AbstractService -from authorization_provider_protocol import AuthorizationProviderProtocol -from enums import AuthorizationRules from application.dialogue import UserSchema from application.permissions_checker import AuthorizationError from application.utils.queries import get_user +from authorization_provider_protocol import AuthorizationProviderProtocol +from enums import AuthorizationRules from tests.conftest import TestCreds from tests.test_api.test_web_permissions.conftest import ( get_params, diff --git a/tests/test_ldap/policies/test_audit/conftest.py b/tests/test_ldap/policies/test_audit/conftest.py index 7c3c98b68..20a1eb0a0 100644 --- a/tests/test_ldap/policies/test_audit/conftest.py +++ b/tests/test_ldap/policies/test_audit/conftest.py @@ -15,10 +15,10 @@ provide, ) -from config import Settings from application.policies.audit.destination_dao import AuditDestinationDAO from application.policies.audit.policies_dao import AuditPoliciesDAO from application.policies.audit.service import AuditService +from config import Settings from tests.conftest import TestProvider diff --git a/tests/test_ldap/policies/test_audit/test_service.py b/tests/test_ldap/policies/test_audit/test_service.py index b09610d04..e3a4810cd 100644 --- a/tests/test_ldap/policies/test_audit/test_service.py +++ b/tests/test_ldap/policies/test_audit/test_service.py @@ -7,7 +7,6 @@ import pytest import pytest_asyncio -from enums import AuditDestinationProtocolType, AuditDestinationServiceType from application.policies.audit.dataclasses import ( AuditDestinationDTO, AuditPolicyDTO, @@ -17,6 +16,7 @@ AuditNotFoundError, ) from application.policies.audit.service import AuditService +from enums import AuditDestinationProtocolType, AuditDestinationServiceType @pytest.mark.asyncio diff --git a/tests/test_ldap/policies/test_network/test_pool_client_handler.py b/tests/test_ldap/policies/test_network/test_pool_client_handler.py index a28df97bb..8d10f63b0 100644 --- a/tests/test_ldap/policies/test_network/test_pool_client_handler.py +++ b/tests/test_ldap/policies/test_network/test_pool_client_handler.py @@ -9,10 +9,10 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import NetworkPolicy -from enums import ProtocolType from application.policies.network import NetworkPolicyValidatorUseCase from application.utils.queries import get_group, get_user +from domain.entities import NetworkPolicy +from enums import ProtocolType @pytest.mark.asyncio diff --git a/tests/test_ldap/policies/test_network/test_use_case.py b/tests/test_ldap/policies/test_network/test_use_case.py index 14b12e024..866238db9 100644 --- a/tests/test_ldap/policies/test_network/test_use_case.py +++ b/tests/test_ldap/policies/test_network/test_use_case.py @@ -8,12 +8,12 @@ import pytest -from enums import MFAFlags from application.policies.network import NetworkPolicyUseCase from application.policies.network.dto import ( NetworkPolicyDTO, NetworkPolicyUpdateDTO, ) +from enums import MFAFlags @pytest.mark.asyncio diff --git a/tests/test_ldap/policies/test_password/conftest.py b/tests/test_ldap/policies/test_password/conftest.py index f7d19fc86..c19e82126 100644 --- a/tests/test_ldap/policies/test_password/conftest.py +++ b/tests/test_ldap/policies/test_password/conftest.py @@ -15,8 +15,8 @@ provide, ) -from config import Settings from application.policies.password import PasswordPolicyUseCases +from config import Settings from tests.conftest import TestProvider diff --git a/tests/test_ldap/test_access_manager/test_entity_level_access.py b/tests/test_ldap/test_access_manager/test_entity_level_access.py index 0475410c1..60b390cce 100644 --- a/tests/test_ldap/test_access_manager/test_entity_level_access.py +++ b/tests/test_ldap/test_access_manager/test_entity_level_access.py @@ -6,8 +6,8 @@ import pytest -from domain.entities import AccessControlEntry from application.roles.access_manager import AccessManager +from domain.entities import AccessControlEntry from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_access_manager/test_modify_access.py b/tests/test_ldap/test_access_manager/test_modify_access.py index 6624754e4..a4ae097c6 100644 --- a/tests/test_ldap/test_access_manager/test_modify_access.py +++ b/tests/test_ldap/test_access_manager/test_modify_access.py @@ -6,11 +6,11 @@ import pytest -from domain.entities import AccessControlEntry -from enums import AceType from application.ldap_responses import PartialAttribute from application.objects import Changes, Operation from application.roles.access_manager import AccessManager +from domain.entities import AccessControlEntry +from enums import AceType from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_access_manager/test_search_access.py b/tests/test_ldap/test_access_manager/test_search_access.py index 5f4af7706..1d4c2ace1 100644 --- a/tests/test_ldap/test_access_manager/test_search_access.py +++ b/tests/test_ldap/test_access_manager/test_search_access.py @@ -6,8 +6,8 @@ import pytest -from domain.entities import AccessControlEntry from application.roles.access_manager import AccessManager +from domain.entities import AccessControlEntry from .conftest import create_mock_ace diff --git a/tests/test_ldap/test_attribute_value_validator.py b/tests/test_ldap/test_attribute_value_validator.py index b4db21529..16aef960c 100644 --- a/tests/test_ldap/test_attribute_value_validator.py +++ b/tests/test_ldap/test_attribute_value_validator.py @@ -6,10 +6,10 @@ import pytest -from enums import EntityTypeNames from application.ldap_schema.attribute_value_validator import ( AttributeValueValidator, ) +from enums import EntityTypeNames @pytest.fixture diff --git a/tests/test_ldap/test_bind.py b/tests/test_ldap/test_bind.py index d4c630ddb..a4e4cf57f 100644 --- a/tests/test_ldap/test_bind.py +++ b/tests/test_ldap/test_bind.py @@ -12,8 +12,6 @@ from dishka import AsyncContainer, Scope from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings -from domain.entities import Attribute, Directory, User from application.dependency import resolve_deps from application.dialogue import LDAPSession from application.ldap_requests.bind import ( @@ -32,6 +30,8 @@ LDAPUnbindRequestContext, ) from application.objects import UserAccountControlFlag +from config import Settings +from domain.entities import Attribute, Directory, User from password_utils import PasswordUtils from tests.conftest import MutePolicyBindRequest, TestCreds diff --git a/tests/test_ldap/test_container_restrictions/conftest.py b/tests/test_ldap/test_container_restrictions/conftest.py index 54033abad..064f4b474 100644 --- a/tests/test_ldap/test_container_restrictions/conftest.py +++ b/tests/test_ldap/test_container_restrictions/conftest.py @@ -8,8 +8,8 @@ import pytest_asyncio -from domain.entities import AccessControlEntry from application.dialogue import UserSchema +from domain.entities import AccessControlEntry @pytest_asyncio.fixture diff --git a/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py b/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py index ab1cb1100..aec7faa88 100644 --- a/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py +++ b/tests/test_ldap/test_container_restrictions/test_container_subcontainers.py @@ -9,8 +9,8 @@ import pytest -from config import Settings from application.ldap_codes import LDAPCodes +from config import Settings from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_ldap3_definition_parse.py b/tests/test_ldap/test_ldap3_definition_parse.py index 24ae75668..79c2027a6 100644 --- a/tests/test_ldap/test_ldap3_definition_parse.py +++ b/tests/test_ldap/test_ldap3_definition_parse.py @@ -7,10 +7,10 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession -from domain.entities import AttributeType, ObjectClass from application.utils.raw_definition_parser import ( RawDefinitionParser as RDParser, ) +from domain.entities import AttributeType, ObjectClass test_ldap3_parse_attribute_types_dataset = [ [ diff --git a/tests/test_ldap/test_roles/conftest.py b/tests/test_ldap/test_roles/conftest.py index 5211d0d6c..b84d2c8c2 100644 --- a/tests/test_ldap/test_roles/conftest.py +++ b/tests/test_ldap/test_roles/conftest.py @@ -9,8 +9,8 @@ import pytest_asyncio -from config import Settings from application.roles.role_dao import RoleDAO, RoleDTO +from config import Settings from tests.conftest import TestCreds BASE_DN = "dc=md,dc=test" diff --git a/tests/test_ldap/test_roles/test_multiple_access.py b/tests/test_ldap/test_roles/test_multiple_access.py index 6891ce34a..b71722ea5 100644 --- a/tests/test_ldap/test_roles/test_multiple_access.py +++ b/tests/test_ldap/test_roles/test_multiple_access.py @@ -11,14 +11,14 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, subqueryload -from config import Settings -from domain.entities import Directory -from enums import AceType, EntityTypeNames, RoleScope from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.roles.ace_dao import AccessControlEntryDAO from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO from application.utils.queries import get_filter_from_path +from config import Settings +from domain.entities import Directory +from enums import AceType, EntityTypeNames, RoleScope from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_roles/test_search.py b/tests/test_ldap/test_roles/test_search.py index 2566c57c4..e32477a6b 100644 --- a/tests/test_ldap/test_roles/test_search.py +++ b/tests/test_ldap/test_roles/test_search.py @@ -6,12 +6,12 @@ import pytest -from config import Settings -from enums import AceType, EntityTypeNames, RoleScope from application.ldap_schema.attribute_type_dao import AttributeTypeDAO from application.ldap_schema.entity_type_dao import EntityTypeDAO from application.roles.ace_dao import AccessControlEntryDAO from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO +from config import Settings +from enums import AceType, EntityTypeNames, RoleScope from tests.conftest import TestCreds from .conftest import perform_ldap_search_and_validate diff --git a/tests/test_ldap/test_util/test_add.py b/tests/test_ldap/test_util/test_add.py index 24225f5bf..a3709e6e4 100644 --- a/tests/test_ldap/test_util/test_add.py +++ b/tests/test_ldap/test_util/test_add.py @@ -13,9 +13,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload, subqueryload -from config import Settings -from domain.entities import Directory, Group, User -from enums import AceType, RoleScope from application.dialogue import LDAPSession from application.ldap_codes import LDAPCodes from application.ldap_requests import AddRequest @@ -24,6 +21,9 @@ from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO from application.roles.role_dao import RoleDAO from application.utils.queries import get_filter_from_path +from config import Settings +from domain.entities import Directory, Group, User +from enums import AceType, RoleScope from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_util/test_delete.py b/tests/test_ldap/test_util/test_delete.py index bd990cd29..a84e3b024 100644 --- a/tests/test_ldap/test_util/test_delete.py +++ b/tests/test_ldap/test_util/test_delete.py @@ -11,13 +11,13 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from config import Settings -from domain.entities import Directory -from enums import AceType, RoleScope from application.ldap_codes import LDAPCodes from application.roles.ace_dao import AccessControlEntryDAO from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO from application.roles.role_dao import RoleDAO +from config import Settings +from domain.entities import Directory +from enums import AceType, RoleScope from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_util/test_modify.py b/tests/test_ldap/test_util/test_modify.py index cb90e087c..b46e1045c 100644 --- a/tests/test_ldap/test_util/test_modify.py +++ b/tests/test_ldap/test_util/test_modify.py @@ -16,9 +16,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import joinedload, selectinload, subqueryload -from config import Settings -from domain.entities import Directory, Group -from enums import AceType, RoleScope from application.kerberos.base import AbstractKadmin from application.ldap_codes import LDAPCodes from application.objects import Operation @@ -26,6 +23,9 @@ from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO from application.roles.role_dao import RoleDAO from application.utils.queries import get_filter_from_path +from config import Settings +from domain.entities import Directory, Group +from enums import AceType, RoleScope from repo.pg.tables import Attribute, directory_table, queryable_attr as qa from tests.conftest import TestCreds diff --git a/tests/test_ldap/test_util/test_search.py b/tests/test_ldap/test_util/test_search.py index d59755610..0be7ba2b5 100644 --- a/tests/test_ldap/test_util/test_search.py +++ b/tests/test_ldap/test_util/test_search.py @@ -12,9 +12,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from config import Settings -from domain.entities import User -from enums import AceType, ProtocolType, RoleScope from application.asn1parser import ASN1Row, TagNumbers from application.dialogue import LDAPSession from application.ldap_requests import SearchRequest @@ -25,6 +22,9 @@ from application.roles.dataclasses import AccessControlEntryDTO, RoleDTO from application.roles.role_dao import RoleDAO from application.utils.queries import get_group, get_groups +from config import Settings +from domain.entities import User +from enums import AceType, ProtocolType, RoleScope from repo.pg.tables import queryable_attr as qa from tests.conftest import TestCreds from tests.search_request_datasets import ( diff --git a/tests/test_shedule.py b/tests/test_shedule.py index 30e90fda5..cc51a28d1 100644 --- a/tests/test_shedule.py +++ b/tests/test_shedule.py @@ -7,12 +7,12 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession +from application.kerberos import AbstractKadmin from config import Settings from extra.scripts.check_ldap_principal import check_ldap_principal from extra.scripts.principal_block_user_sync import principal_block_sync from extra.scripts.uac_sync import disable_accounts from extra.scripts.update_krb5_config import update_krb5_config -from application.kerberos import AbstractKadmin @pytest.mark.asyncio From 3a578a2bf1c80292fff99bdb0dededbb860a1c2e Mon Sep 17 00:00:00 2001 From: Nikita Ulyanov Date: Tue, 10 Feb 2026 16:56:14 +0300 Subject: [PATCH 27/27] refactor: rename NetworkPolicyGateway to NetworkPolicyPostgresGateway for clarity --- src/infrastructure/pg/network_policy_gateway.py | 2 +- src/ioc.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/infrastructure/pg/network_policy_gateway.py b/src/infrastructure/pg/network_policy_gateway.py index 1a26aa450..fe165c11e 100644 --- a/src/infrastructure/pg/network_policy_gateway.py +++ b/src/infrastructure/pg/network_policy_gateway.py @@ -32,7 +32,7 @@ from .tables import queryable_attr as qa -class NetworkPolicyGateway: +class NetworkPolicyPostgresGateway: """Network policy gateway.""" def __init__(self, session: AsyncSession): diff --git a/src/ioc.py b/src/ioc.py index e53ac9497..bd4540cea 100644 --- a/src/ioc.py +++ b/src/ioc.py @@ -152,7 +152,9 @@ from config import Settings from db_routing import EngineRegistry, RoutingSession from infrastructure.pg.master_gateway import PGMasterGateway -from infrastructure.pg.network_policy_gateway import NetworkPolicyGateway +from infrastructure.pg.network_policy_gateway import ( + NetworkPolicyPostgresGateway, +) from password_utils import PasswordUtils SessionStorageClient = NewType("SessionStorageClient", redis.Redis) @@ -501,7 +503,7 @@ def get_dhcp_mngr( dcinfo_reader = provide(DCInfoReader, scope=Scope.REQUEST) network_policy_gateway = provide( - NetworkPolicyGateway, + NetworkPolicyPostgresGateway, provides=NetworkPolicyGatewayProtocol, scope=Scope.REQUEST, ) @@ -732,7 +734,7 @@ class LDAPServerProvider(LDAPContextProvider): scope = Scope.SESSION network_policy_validator_gateway = provide( - NetworkPolicyGateway, + NetworkPolicyPostgresGateway, provides=NetworkPolicyGatewayProtocol, scope=Scope.REQUEST, )