fix: fall back to cell effective domain when email service domain not configured
Unit Tests / test (push) Successful in 11m10s
Unit Tests / test (push) Successful in 11m10s
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 <noreply@anthropic.com>
This commit is contained in:
@@ -52,15 +52,17 @@ _HTTP_TIMEOUT = 10
|
|||||||
|
|
||||||
class AccountManager:
|
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
|
service_registry — ServiceRegistry instance
|
||||||
data_dir — host data directory (data/peer_service_credentials.json lives here)
|
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=...,
|
**managers — named manager instances: email_manager=..., calendar_manager=...,
|
||||||
file_manager=...
|
file_manager=...
|
||||||
"""
|
"""
|
||||||
self._registry = service_registry
|
self._registry = service_registry
|
||||||
self._creds_path = Path(data_dir) / 'peer_service_credentials.json'
|
self._creds_path = Path(data_dir) / 'peer_service_credentials.json'
|
||||||
|
self._config_manager = config_manager
|
||||||
self._managers = managers
|
self._managers = managers
|
||||||
self._lock = threading.Lock()
|
self._lock = threading.Lock()
|
||||||
|
|
||||||
@@ -88,6 +90,8 @@ class AccountManager:
|
|||||||
|
|
||||||
def _provision_email(self, manager, svc: Dict, peer_username: str, password: str) -> bool:
|
def _provision_email(self, manager, svc: Dict, peer_username: str, password: str) -> bool:
|
||||||
domain = (svc.get('config') or {}).get('domain', '')
|
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:
|
if not domain:
|
||||||
raise ValueError("Email service has no 'domain' configured")
|
raise ValueError("Email service has no 'domain' configured")
|
||||||
return manager.create_email_user(peer_username, domain, password)
|
return manager.create_email_user(peer_username, domain, password)
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ service_composer = ServiceComposer(config_manager=config_manager, data_dir=DATA_
|
|||||||
account_manager = AccountManager(
|
account_manager = AccountManager(
|
||||||
service_registry=service_registry,
|
service_registry=service_registry,
|
||||||
data_dir=DATA_DIR,
|
data_dir=DATA_DIR,
|
||||||
|
config_manager=config_manager,
|
||||||
email_manager=email_manager,
|
email_manager=email_manager,
|
||||||
calendar_manager=calendar_manager,
|
calendar_manager=calendar_manager,
|
||||||
file_manager=file_manager,
|
file_manager=file_manager,
|
||||||
|
|||||||
Reference in New Issue
Block a user