From f3737acfa4970d279015e095b80d2a446834b280 Mon Sep 17 00:00:00 2001 From: Dmitrii Iurco Date: Fri, 5 Jun 2026 17:06:51 -0400 Subject: [PATCH] fix: fall back to cell effective domain when email service domain not configured When the email store service is installed but no explicit domain has been set in its config, _provision_email now falls back to config_manager.get_effective_domain() so peer account creation works immediately without requiring a separate config step. Also threads config_manager into AccountManager.__init__ (optional kwarg, no existing callers break) so the fallback is available without a global import. Co-Authored-By: Claude Sonnet 4.6 --- api/account_manager.py | 6 +++++- api/managers.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/api/account_manager.py b/api/account_manager.py index 4f2f5cd..418587c 100644 --- a/api/account_manager.py +++ b/api/account_manager.py @@ -52,15 +52,17 @@ _HTTP_TIMEOUT = 10 class AccountManager: - def __init__(self, service_registry, data_dir: str, **managers): + def __init__(self, service_registry, data_dir: str, config_manager=None, **managers): """ service_registry — ServiceRegistry instance data_dir — host data directory (data/peer_service_credentials.json lives here) + config_manager — ConfigManager instance (used to resolve fallback email domain) **managers — named manager instances: email_manager=..., calendar_manager=..., file_manager=... """ self._registry = service_registry self._creds_path = Path(data_dir) / 'peer_service_credentials.json' + self._config_manager = config_manager self._managers = managers self._lock = threading.Lock() @@ -88,6 +90,8 @@ class AccountManager: def _provision_email(self, manager, svc: Dict, peer_username: str, password: str) -> bool: domain = (svc.get('config') or {}).get('domain', '') + if not domain and self._config_manager is not None: + domain = self._config_manager.get_effective_domain() or '' if not domain: raise ValueError("Email service has no 'domain' configured") return manager.create_email_user(peer_username, domain, password) diff --git a/api/managers.py b/api/managers.py index 93c6dce..0af5ad5 100644 --- a/api/managers.py +++ b/api/managers.py @@ -80,6 +80,7 @@ service_composer = ServiceComposer(config_manager=config_manager, data_dir=DATA_ account_manager = AccountManager( service_registry=service_registry, data_dir=DATA_DIR, + config_manager=config_manager, email_manager=email_manager, calendar_manager=calendar_manager, file_manager=file_manager,