public function updateUser(AuthenticationSuccessEvent $event, UserInterface $user) { // Update user last login $user->setLastLogin(new \DateTime()); if ($user->getIp() !== $event->getRequest()->getClientIp()) { $user->setIp($event->getRequest()->getClientIp()); } $this->em->persist($user); $this->em->flush(); // Register a new login hit $userAgent = $event->getRequest()->headers->get('user-agent'); if ($this->em instanceof DocumentManager) { $newHit = new OdmLoginAnalytics($user, $userAgent); } else { $newHit = new OrmLoginAnalytics($user, $userAgent); } $this->em->persist($newHit); $this->em->flush(); }
public function attachRefreshToken(AuthenticationSuccessEvent $event) { $data = $event->getData(); $user = $event->getUser(); $request = $event->getRequest(); if (!$user instanceof UserInterface) { return; } $refreshTokenString = null; if ($request->headers->get('content_type') == 'application/json') { $content = $request->getContent(); $params = !empty($content) ? json_decode($content, true) : array(); $refreshTokenString = trim($params['refresh_token']); } else { $refreshTokenString = $request->request->get('refresh_token'); } if ($refreshTokenString) { $data['refresh_token'] = $refreshTokenString; } else { $datetime = new \DateTime(); $datetime->modify('+' . $this->ttl . ' seconds'); $refreshToken = $this->refreshTokenManager->create(); $refreshToken->setUsername($user->getUsername()); $refreshToken->setRefreshToken(); $refreshToken->setValid($datetime); $valid = false; while (false === $valid) { $valid = true; $errors = $this->validator->validate($refreshToken); if ($errors->count() > 0) { foreach ($errors as $error) { if ('refreshToken' === $error->getPropertyPath()) { $valid = false; $refreshToken->setRefreshToken(); } } } } $this->refreshTokenManager->save($refreshToken); $data['refresh_token'] = $refreshToken->getRefreshToken(); } $event->setData($data); }
public function attachRefreshToken(AuthenticationSuccessEvent $event) { $data = $event->getData(); $user = $event->getUser(); $request = $event->getRequest(); if (!$user instanceof UserInterface) { return; } $refreshTokenString = RequestRefreshToken::getRefreshToken($request); if ($refreshTokenString) { $data['refresh_token'] = $refreshTokenString; } else { $datetime = new \DateTime(); $datetime->modify('+' . $this->ttl . ' seconds'); $refreshToken = $this->refreshTokenManager->create(); $refreshToken->setUsername($user->getUsername()); $refreshToken->setRefreshToken(); $refreshToken->setValid($datetime); $valid = false; while (false === $valid) { $valid = true; $errors = $this->validator->validate($refreshToken); if ($errors->count() > 0) { foreach ($errors as $error) { if ('refreshToken' === $error->getPropertyPath()) { $valid = false; $refreshToken->setRefreshToken(); } } } } $this->refreshTokenManager->save($refreshToken); $data['refresh_token'] = $refreshToken->getRefreshToken(); } $event->setData($data); }
public function it_is_not_valid_user(AuthenticationSuccessEvent $event) { $event->getData()->willReturn(array()); $event->getUser()->willReturn(null); $event->getRequest()->willReturn(null); $this->attachRefreshToken($event); }