diff --git a/lean/models/json_module.py b/lean/models/json_module.py index 7c5b2e55..73e9a027 100644 --- a/lean/models/json_module.py +++ b/lean/models/json_module.py @@ -235,17 +235,28 @@ def config_build(self, logger.debug(f"skipping configuration '{configuration._id}': no choices available.") continue elif isinstance(configuration, AuthConfiguration): - lean_config["project-id"] = self.get_project_id(lean_config["project-id"], - configuration.require_project_id) - logger.debug(f'project_id: {lean_config["project-id"]}') - auth_authorizations = get_authorization(container.api_client.auth0, self._display_name.lower(), - logger, lean_config["project-id"], no_browser=no_browser) - logger.debug(f'auth: {auth_authorizations}') - configuration._value = auth_authorizations.get_authorization_config_without_account() + # Create a unique cache key based on brokerage + project_id + cache_key = f"{self._display_name.lower()}_{lean_config.get('project-id', 0)}" + + if cache_key not in lean_config: + # Only get the token if it's not in the cache + lean_config["project-id"] = self.get_project_id(lean_config["project-id"], + configuration.require_project_id) + logger.debug(f'project_id: {lean_config["project-id"]}') + auth_authorizations = get_authorization(container.api_client.auth0, self._display_name.lower(), + logger, lean_config["project-id"], no_browser=no_browser) + logger.debug(f'auth: {auth_authorizations}') + lean_config[cache_key] = { + "config": auth_authorizations.get_authorization_config_without_account(), + "account_ids": auth_authorizations.get_account_ids() + } + + cached_auth = lean_config[cache_key] + configuration._value = cached_auth["config"] for inner_config in self._lean_configs: if any(condition._dependent_config_id == configuration._id for condition in inner_config._filter._conditions): - api_account_ids = auth_authorizations.get_account_ids() + api_account_ids = cached_auth["account_ids"] config_dash = inner_config._id.replace('-', '_') inner_config._choices = api_account_ids if user_provided_options and config_dash in user_provided_options: