diff --git a/app/modules/dev_tools/routes/api/admin_platform_debug.py b/app/modules/dev_tools/routes/api/admin_platform_debug.py index 21d052f2..14c0ccb6 100644 --- a/app/modules/dev_tools/routes/api/admin_platform_debug.py +++ b/app/modules/dev_tools/routes/api/admin_platform_debug.py @@ -127,7 +127,7 @@ def trace_platform_resolution( # ── Step 4: StoreContextMiddleware detection ── # Simulate what StoreContextManager.detect_store_context() would see # It reads request.state.platform_clean_path which is set to clean_path - store_context = _simulate_store_detection(clean_path, host) + store_context = StoreContextManager._detect_store_from_host_and_path(host, clean_path, platform) if store_context and platform: store_context["_platform"] = platform @@ -274,68 +274,6 @@ def trace_platform_resolution( ) -def _simulate_store_detection(clean_path: str, host: str) -> dict | None: - """ - Simulate StoreContextManager.detect_store_context() for a given path/host. - - Reproduces the same logic without needing a real Request object. - """ - from app.core.config import settings - from app.modules.tenancy.models import StoreDomain - - host_without_port = host.split(":")[0] if ":" in host else host - - # Method 1: Custom domain - platform_domain = getattr(settings, "platform_domain", "platform.com") - is_custom_domain = ( - host_without_port - and not host_without_port.endswith(f".{platform_domain}") - and host_without_port != platform_domain - and host_without_port not in ["localhost", "127.0.0.1", "admin.localhost", "admin.127.0.0.1"] - and not host_without_port.startswith("admin.") - ) - if is_custom_domain: - normalized_domain = StoreDomain.normalize_domain(host_without_port) - return { - "domain": normalized_domain, - "detection_method": "custom_domain", - "host": host_without_port, - "original_host": host, - } - - # Method 2: Subdomain - if "." in host_without_port: - parts = host_without_port.split(".") - if len(parts) >= 2 and parts[0] not in ["www", "admin", "api"]: - subdomain = parts[0] - return { - "subdomain": subdomain, - "detection_method": "subdomain", - "host": host_without_port, - } - - # Method 3: Path-based - if clean_path.startswith(("/store/", "/stores/", "/storefront/")): - if clean_path.startswith("/storefront/"): - prefix_len = len("/storefront/") - elif clean_path.startswith("/stores/"): - prefix_len = len("/stores/") - else: - prefix_len = len("/store/") - - path_parts = clean_path[prefix_len:].split("/") - if len(path_parts) >= 1 and path_parts[0]: - store_code = path_parts[0] - return { - "subdomain": store_code, - "detection_method": "path", - "path_prefix": clean_path[:prefix_len + len(store_code)], - "full_prefix": clean_path[:prefix_len], - "host": host_without_port, - } - - return None - def _sanitize(d: dict | None) -> dict | None: """Remove non-serializable objects from dict."""