/**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }