/**
  * Updates the user last action
  *
  * @param PostResponseEvent $event
  */
 public function onRequestTermination(PostResponseEvent $event)
 {
     $this->userFetcher->setThrowOnTokenError(false);
     if (null === ($user = $this->userFetcher->resolve())) {
         return;
     }
     $requestTime = $event->getRequest()->server->get('REQUEST_TIME');
     $dateTime = new \DateTime();
     $dateTime->setTimestamp($requestTime);
     $user->updateLastAction($dateTime);
     $this->userRepository->modify($user);
 }
 /**
  * Checks if after a reload if the locale has changed.
  * If the user is logged in, the route is the default application route and the locale has changed,
  * the user locale will be modified
  *
  * @param GetResponseEvent $event
  */
 public function switchLocaleOnRequest(GetResponseEvent $event)
 {
     // no user is set in the access token
     // which means that no system user is authenticated and
     // that trigger is irrelevant
     if (null === ($user = $this->userFetcher->resolve())) {
         return;
     }
     $userLocale = $user->getSimpleProfile()->getLocale();
     if ($userLocale === ($cookie = $event->getRequest()->cookies->get('locale'))) {
         return;
     }
     $validLocale = true;
     try {
         $user->changeUserLocale($cookie);
     } catch (ChangeUserLocaleException $ex) {
         $validLocale = false;
         $request = $event->getRequest();
         $request->cookies->remove('locale');
         $request->setLocale($userLocale);
         $request->attributes->set('_locale', $userLocale);
     }
     // if the locale is invalid,
     // the cookie will be fixed in the response event
     if (!$validLocale) {
         $this->fixCookie = true;
         return;
     }
     $this->userRepository->modify($user);
 }
 /**
  * Resets the password of a user
  *
  * @param User $user
  */
 public function resetPassword(User $user)
 {
     $user->resetPassword($this->keyGenerator);
     $this->userRepository->modify($user);
 }
 /**
  * Activates a user
  *
  * @param User $user
  * @param ActivateUserDTO $keyCode
  */
 public function activateUser(User $user, ActivateUserDTO $keyCode)
 {
     $user->activate($keyCode->getCode());
     $this->userRepository->modify($user);
 }
 /**
  * Removes the user token
  *
  * @param User $user
  */
 public function purgeToken(User $user)
 {
     $user->deleteToken();
     $this->userRepository->modify($user);
 }