You are here

public function RedirectSubscriber::checkForRedirection in Open Social 8.8

Same name in this branch
  1. 8.8 modules/social_features/social_group/src/EventSubscriber/RedirectSubscriber.php \Drupal\social_group\EventSubscriber\RedirectSubscriber::checkForRedirection()
  2. 8.8 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. 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()
  5. 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()
  6. 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()
  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 35

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.
  $group = _social_group_get_current_group();

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

  // Get the current user.
  $user = \Drupal::currentUser();

  // 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 a group is set, and the type is flexible_group.
  if ($group && $group
    ->getGroupType()
    ->id() === 'flexible_group') {
    if ($user
      ->hasPermission('manage all groups')) {
      return;
    }
    elseif (!$group
      ->getMember($user) && $routeMatch === 'entity.group.join' && !social_group_flexible_group_can_join_directly($group)) {
      $event
        ->setResponse(new RedirectResponse(Url::fromRoute('view.group_information.page_group_about', [
        'group' => $group
          ->id(),
      ])
        ->toString()));
    }
    elseif (!$group
      ->getMember($user) && in_array($routeMatch, $routes, FALSE) && !social_group_flexible_group_community_enabled($group) && !social_group_flexible_group_public_enabled($group)) {
      $event
        ->setResponse(new RedirectResponse(Url::fromRoute('view.group_information.page_group_about', [
        'group' => $group
          ->id(),
      ])
        ->toString()));
    }
  }
}