You are here

public function GeolocateUserSubscriber::GeolocateUser in Smart IP 8.2

Same name and namespace in other branches
  1. 8.4 src/EventSubscriber/GeolocateUserSubscriber.php \Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber::geolocateUser()
  2. 8.3 src/EventSubscriber/GeolocateUserSubscriber.php \Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber::geolocateUser()

Initiate user geolocation.

Parameters

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

File

src/EventSubscriber/GeolocateUserSubscriber.php, line 27
Contains \Drupal\smart_ip\EventSubscriber\GeolocateUserSubscriber.

Class

GeolocateUserSubscriber
Allows Smart IP to act on HTTP request event.

Namespace

Drupal\smart_ip\EventSubscriber

Code

public function GeolocateUser(GetResponseEvent $event) {

  // Check to see if the page is one of those allowed for geolocation
  if (!\Drupal\smart_ip\SmartIp::checkAllowedPage()) {

    // This page is not on the list to acquire/update user's geolocation
    return;
  }

  /** @var \Drupal\smart_ip\SmartIpLocation $location */
  $location = \Drupal::service('smart_ip.smart_ip_location');

  // Save a database hit. If there's already session data, don't check if we
  // need to geolocate the anonymous role.
  if (empty($location
    ->getData())) {
    $roles = \Drupal::config('smart_ip.settings')
      ->get('roles_to_geolocate');
    if (in_array(AccountInterface::ANONYMOUS_ROLE, $roles)) {
      SmartIp::updateUserLocation();
    }
  }
}