/** * Process integrations from config files for the given array of integration names * * @param array $integrationNames * @return array */ public function processIntegrationConfig(array $integrationNames) { if (empty($integrationNames)) { return []; } /** @var array $integrations */ $integrations = $this->_integrationConfig->getIntegrations(); foreach ($integrationNames as $name) { $integrationDetails = $integrations[$name]; $integrationData = [Integration::NAME => $name]; if (isset($integrationDetails[Converter::KEY_EMAIL])) { $integrationData[Integration::EMAIL] = $integrationDetails[Converter::KEY_EMAIL]; } if (isset($integrationDetails[Converter::KEY_AUTHENTICATION_ENDPOINT_URL])) { $integrationData[Integration::ENDPOINT] = $integrationDetails[Converter::KEY_AUTHENTICATION_ENDPOINT_URL]; } if (isset($integrationDetails[Converter::KEY_IDENTITY_LINKING_URL])) { $integrationData[Integration::IDENTITY_LINK_URL] = $integrationDetails[Converter::KEY_IDENTITY_LINKING_URL]; } $integrationData[Integration::SETUP_TYPE] = Integration::TYPE_CONFIG; // If it already exists, update it $integration = $this->_integrationService->findByName($name); if ($integration->getId()) { //If Integration already exists, update it. //For now we will just overwrite the integration with same name but we will need a long term solution $integrationData[Integration::ID] = $integration->getId(); $this->_integrationService->update($integrationData); } else { $this->_integrationService->create($integrationData); } } return $integrationNames; }
/** * Check whether all indices are valid or not * * @return bool */ public function isDisplayed() { foreach (array_keys($this->integrationConfig->getIntegrations()) as $name) { $integration = $this->integrationService->findByName($name); if ($integration->getStatus() == Integration::STATUS_RECREATED) { return true; } } return false; }
/** * Process integration resource permissions after the integration is created * * @param ConfigBasedIntegrationManager $subject * @param array $integrations integrations passed as array from the invocation chain * * @return array * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterProcessIntegrationConfig(ConfigBasedIntegrationManager $subject, $integrations) { if (empty($integrations)) { return []; } /** @var array $integrationsResource */ $integrationsResource = $this->_integrationConfig->getIntegrations(); foreach (array_keys($integrations) as $name) { if (isset($integrationsResource[$name])) { $integration = $this->_integrationService->findByName($name); if ($integration->getId()) { $this->integrationAuthorizationService->grantPermissions($integration->getId(), $integrationsResource[$name]['resource']); } } } return $integrations; }
/** * Process integrations from config files for the given array of integration names * * @param array $integrations * @return array */ public function processIntegrationConfig(array $integrations) { if (empty($integrations)) { return []; } /** @var array $integrationsResource */ $integrationsResource = $this->integrationConfig->getIntegrations(); foreach (array_keys($integrations) as $name) { $integrationDetails = $integrations[$name]; $integrationData = [Integration::NAME => $name]; if (isset($integrationDetails[Converter::KEY_EMAIL])) { $integrationData[Integration::EMAIL] = $integrationDetails[Converter::KEY_EMAIL]; } if (isset($integrationDetails[Converter::KEY_AUTHENTICATION_ENDPOINT_URL])) { $integrationData[Integration::ENDPOINT] = $integrationDetails[Converter::KEY_AUTHENTICATION_ENDPOINT_URL]; } if (isset($integrationDetails[Converter::KEY_IDENTITY_LINKING_URL])) { $integrationData[Integration::IDENTITY_LINK_URL] = $integrationDetails[Converter::KEY_IDENTITY_LINKING_URL]; } if (isset($integrationsResource[$name]['resource'])) { $integrationData['resource'] = $integrationsResource[$name]['resource']; } $integrationData[Integration::SETUP_TYPE] = Integration::TYPE_CONFIG; $integration = $this->integrationService->findByName($name); if ($integration->getId()) { $originalResources = $this->aclRetriever->getAllowedResourcesByUser(UserContextInterface::USER_TYPE_INTEGRATION, $integration->getId()); $updateData = $integrationData; $updateData[Integration::ID] = $integration->getId(); $integration = $this->integrationService->update($updateData); // If there were any changes, delete then recreate integration if ($this->hasDataChanged($integration, $originalResources)) { $this->integrationService->delete($integration->getId()); $integrationData[Integration::STATUS] = Integration::STATUS_RECREATED; } else { continue; } } $this->integrationService->create($integrationData); } return $integrations; }