/** * 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); }