diff --git a/modules/apigee_edge_teams/apigee_edge_teams.install b/modules/apigee_edge_teams/apigee_edge_teams.install
index a3191e3b..d0a83c20 100644
--- a/modules/apigee_edge_teams/apigee_edge_teams.install
+++ b/modules/apigee_edge_teams/apigee_edge_teams.install
@@ -41,18 +41,21 @@ function apigee_edge_teams_requirements($phase) {
$org_controller = \Drupal::service('apigee_edge.controller.organization');
/* @var \Apigee\Edge\Api\Management\Entity\Organization $organization */
$organization = $org_controller->load($sdk_connector->getOrganization());
- if ($organization && !OrganizationFeatures::isCompaniesFeatureAvailable($organization) && OrganizationFeatures::isMonetizationEnabled($organization)) {
- $url = [
- ':url' => 'https://cloud.google.com/apigee/docs/api-platform/get-started/compare-apigee-products#unsupported-apis',
- ];
- $message = ($phase == 'runtime') ?
- t("The Teams module functionality is not available for monetization enabled org on Apigee X / Hybrid and should be uninstalled, because AppGroup APIs are not supported in Apigee X / Hybrid orgs with monetization enabled.", $url) :
- t("The Teams module functionality is not available for monetization enabled org on Apigee X / Hybrid because AppGroup APIs are not supported in Apigee X / Hybrid orgs with monetization enabled.", $url);
- $requirements['apigee_edge_teams_not_supported'] = [
- 'title' => t('Apigee Edge Teams'),
- 'description' => $message,
- 'severity' => REQUIREMENT_ERROR,
- ];
+ if ($organization && $org_controller->isOrganizationApigeeX()) {
+ // AppGroup APIs are not supported in Apigee X / Hybrid orgs with monetization enabled.
+ if ($organization->getAddonsConfig() && $organization->getAddonsConfig()->getMonetizationConfig() && TRUE === $organization->getAddonsConfig()->getMonetizationConfig()->getEnabled()) {
+ $url = [
+ ':url' => 'https://cloud.google.com/apigee/docs/api-platform/publish/organizing-client-app-ownership?hl=en#appgroups-limitations-and-known-issues',
+ ];
+ $message = ($phase == 'runtime') ?
+ t("The Teams module functionality is not available for monetization enabled org on Apigee X / Hybrid and should be uninstalled, because AppGroup APIs are not supported in Apigee X / Hybrid orgs with monetization enabled.", $url) :
+ t("The Teams module functionality is not available for monetization enabled org on Apigee X / Hybrid because AppGroup APIs are not supported in Apigee X / Hybrid orgs with monetization enabled.", $url);
+ $requirements['apigee_edge_teams_not_supported'] = [
+ 'title' => t('Apigee Edge Teams'),
+ 'description' => $message,
+ 'severity' => REQUIREMENT_ERROR,
+ ];
+ }
}
}
catch (\Exception $exception) {
diff --git a/modules/apigee_edge_teams/apigee_edge_teams.services.yml b/modules/apigee_edge_teams/apigee_edge_teams.services.yml
index 0db1d3f9..6e772912 100644
--- a/modules/apigee_edge_teams/apigee_edge_teams.services.yml
+++ b/modules/apigee_edge_teams/apigee_edge_teams.services.yml
@@ -121,6 +121,12 @@ services:
tags:
- { name: event_subscriber }
+ apigee_edge_teams.validate_apigeexteam_enabled:
+ class: Drupal\apigee_edge_teams\EventSubscriber\ValidateApigeeXTeamEnabledSubscriber
+ arguments: ['@current_user', '@apigee_edge.sdk_connector', '@apigee_edge.controller.organization', '@messenger']
+ tags:
+ - {name: event_subscriber}
+
route.subscriber.apigee_edge_teams.team_app_by_name:
class: Drupal\apigee_edge_teams\Routing\TeamAppByNameRouteAlterSubscriber
tags:
diff --git a/modules/apigee_edge_teams/src/EventSubscriber/ValidateApigeeXTeamEnabledSubscriber.php b/modules/apigee_edge_teams/src/EventSubscriber/ValidateApigeeXTeamEnabledSubscriber.php
new file mode 100644
index 00000000..2b2129f9
--- /dev/null
+++ b/modules/apigee_edge_teams/src/EventSubscriber/ValidateApigeeXTeamEnabledSubscriber.php
@@ -0,0 +1,114 @@
+currentUser = $current_user;
+ $this->connector = $sdk_connector;
+ $this->orgController = $org_controller;
+ $this->messenger = $messenger;
+ }
+
+ /**
+ * If monetization enabled in Apigee X org alert the user.
+ *
+ * @param \Symfony\Component\HttpKernel\Event\RequestEvent $event
+ * The event.
+ */
+ public function validateApigeexTeamEnabled(RequestEvent $event): void {
+ // Check only for html request and admin users.
+ if ($this->currentUser->hasPermission('administer modules') && $event->getRequest()->getRequestFormat() === 'html') {
+ /** @var \Symfony\Component\Routing\Route $current_route */
+ if (($current_route = $event->getRequest()->get('_route')) && (strpos($current_route, 'entity.team') !== FALSE || strpos($current_route, 'settings.team') !== FALSE)) {
+ $organization = $this->orgController->load($this->connector->getOrganization());
+ if ($organization && $this->orgController->isOrganizationApigeeX()) {
+ if ($organization->getAddonsConfig() && $organization->getAddonsConfig()->getMonetizationConfig() && TRUE === $organization->getAddonsConfig()->getMonetizationConfig()->getEnabled()) {
+ $this->messenger->addError($this->t('The Teams module functionality is not available for monetization enabled org on Apigee X / Hybrid and should be uninstalled.'));
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function getSubscribedEvents(): array {
+ $events[KernelEvents::REQUEST][] = ['validateApigeexTeamEnabled'];
+ return $events;
+ }
+
+}