You are here

public function RedirectSubscriber::checkForRedirection in Open Social 10.1.x

Same name in this branch
  1. 10.1.x modules/social_features/social_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  2. 10.1.x modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
Same name and namespace in other branches
  1. 8.9 modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  2. 8.6 modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  3. 8.7 modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  4. 8.8 modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  5. 10.3.x modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  6. 10.0.x modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  7. 10.2.x modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group_flexible_group\EventSubscriber\RedirectSubscriber::checkForRedirection()

This method is called when the KernelEvents::REQUEST event is dispatched.

Parameters

\Symfony\Component\HttpKernel\Event\GetResponseEvent $event: The event.

File

modules/social_features/social_group/modules/social_group_flexible_group/src/EventSubscriber/RedirectSubscriber.php, line 68

Class

RedirectSubscriber
Class RedirectSubscriber.

Namespace

Drupal\social_group_flexible_group\EventSubscriber

Code

public function checkForRedirection(GetResponseEvent $event) {

  // Check if there is a group object on the current route.
  if (!($group = _social_group_get_current_group())) {
    return;
  }

  // If a group type is flexible group.
  if ($group
    ->bundle() !== 'flexible_group') {
    return;
  }

  // If the user can manage groups or the user is a member.
  if ($this->currentUser
    ->hasPermission('manage all groups') || $group
    ->getMember($this->currentUser)) {
    return;
  }

  // Get the current route name for the checks being performed below.
  $route_name = $this->routeMatch
    ->getRouteName();

  // The array of forbidden routes.
  $routes = [
    'entity.group.canonical',
    'view.group_events.page_group_events',
    'view.group_topics.page_group_topics',
    'social_group.stream',
  ];

  // If "Allowed join method" is not set to "Join directly" in this group.
  if ($route_name === 'entity.group.join' && !social_group_flexible_group_can_join_directly($group)) {
    $this
      ->doRedirect($event, $group);
  }
  elseif (in_array($route_name, $routes) && !social_group_flexible_group_community_enabled($group) && !social_group_flexible_group_public_enabled($group)) {
    $this
      ->doRedirect($event, $group);
  }
}