/**
  * @param AuthenticationSuccessEvent $event
  */
 public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $user = $event->getUser();
     if (!$user instanceof UserInterface) {
         return;
     }
     // $data['token'] contains the JWT
     $data['id'] = $user->getId();
     $event->setData($data);
 }
 /**
  * Add public data to the authentication response.
  *
  * @param AuthenticationSuccessEvent $event
  */
 public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $username = $event->getUser() ? $event->getUser()->getUsername() : '';
     $userManager = $this->em->getRepository('UserBundle:User');
     $user = $userManager->findOneBy(['username' => $username]);
     $data['user'] = array('id' => $user->getId(), 'email' => $user->getEmail());
     $event->setData($data);
 }
Beispiel #3
0
 /**
  * Add public data to the authentication response
  *
  * @param AuthenticationSuccessEvent $event
  */
 public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $user = $event->getUser();
     if (!$user instanceof UserInterface) {
         return;
     }
     $data['data'] = array('username' => $user->getUsername(), 'roles' => $user->getRoles());
     $event->setData($data);
 }
 /**
  * Add public data to the authentication response
  *
  * @param AuthenticationSuccessEvent $event
  */
 public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $user = $this->userManager->findUserByUsernameOrEmail($event->getUser()->getUsername());
     if (!$user instanceof UserInterface) {
         return;
     }
     $data['data'] = array('user' => $this->serializer->deserialize($this->serializer->serialize($user, 'json'), 'array', 'json'));
     $event->setData($data);
 }
 public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $user = $event->getUser();
     $data['id'] = $user->getId();
     $data['email'] = $user->getEmail();
     $data['firstname'] = $user->getFirstname();
     $data['lastname'] = $user->getLastname();
     $data['roles'] = $user->getRoles();
     $event->setData($data);
 }
 /**
  * {@inheritDoc}
  */
 public function onAuthenticationSuccess(Request $request, TokenInterface $token)
 {
     $user = $token->getUser();
     $jwt = $this->jwtManager->create($user);
     $response = new JsonResponse();
     $event = new AuthenticationSuccessEvent(array('token' => $jwt), $user, $request);
     $event->setResponse($response);
     $this->dispatcher->dispatch(Events::AUTHENTICATION_SUCCESS, $event);
     $response->setData($event->getData());
     return $response;
 }
 /**
  * @param AuthenticationSuccessEvent $event
  */
 public function onAuthenticationSuccess(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $user = $event->getUser();
     if (!$user instanceof UserInterface) {
         return;
     }
     $data = $this->jwtResponseTransformer->transform($data, $user);
     $event->setData($data);
     $user->setLastLogin(new \DateTime());
     $this->userManager->updateUser($user);
 }
 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 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();
     if (!$user instanceof UserInterface) {
         return;
     }
     $refreshToken = $this->refreshTokenManager->getLastFromUsername($user->getUsername());
     if (!$refreshToken instanceof RefreshToken) {
         $datetime = new \DateTime();
         $datetime->modify('+' . $this->ttl . ' seconds');
         $refreshToken = $this->refreshTokenManager->create();
         $refreshToken->setUsername($user->getUsername());
         $refreshToken->setRefreshToken();
         $refreshToken->setValid($datetime);
         $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);
 }
 /**
  * Add unsigned parameters, such as:
  * - databases (this list is also signed but presented here for listing to unauthenticated clients)
  * - parameters, extra info you may attach to object as necessary
  *
  * @param AuthenticationSuccessEvent $event
  */
 public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $AuthUser = $event->getUser();
     if (!$AuthUser instanceof AuthUser) {
         throw new AccessDeniedException('AuthUser object not found');
     }
     if (!in_array('ROLE_USER', $AuthUser->getRoles())) {
         throw new AccessDeniedException('User lacks necessary role');
     }
     $AuthUser->setLastToken($data['token']);
     $AuthUser = $this->entityManager->merge($AuthUser);
     $this->entityManager->persist($AuthUser);
     $this->entityManager->flush();
     $data['databases'] = $this->getDatabaseArray($event->getUser());
     $data['parameters'] = $this->getParametersArray($event->getUser());
     $event->setData($data);
 }
 /**
  * Add public data to the authentication response.
  *
  * @param AuthenticationSuccessEvent $event
  */
 public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
 {
     $data = $event->getData();
     $data['user'] = $event->getUser()->getUsername();
     $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);
 }