2016-07-11 3 views
0

Я заблокировал пользователей, которые могут повторно активировать свою учетную запись, если они вводят действительный ValidationCode при входе в систему. Поскольку пользователь ранее заблокирован, я использую AuthenticationFailureListener, чтобы обнаружить неудачу входа в систему и определить, есть ли действительный код проверки, в соответствии с трассировкой журнала. Кажется, что каждое действие имеет правильные данные, и все должно работать нормально, но проблема в том, что данные остаются То же самое, ничего не сохраняется в базе данных, поэтому никаких изменений не происходит.FOSUserBundle разблокировать пользователя при входе в систему: изменения не сохраняются

Это мой код:

public function onAuthenticationFailure(Request $request, AuthenticationException $exception) 
{ 
    $userReactivated = false; 

    // Checks if error is due to user locked and 
    if ($exception instanceof LockedException) 
    { 
     $username = $request->request->get("_username"); 
     $v_code = $request->request->get("_validation_code"); 

     error_log("{$username} {$v_code}"); 

     $user = $this->em->getRepository("AppUserBundle:Usuario")->findOneBy(array('username' => $username)); 
     if ($user != null) 
     { 
      $validationCode = $this->em->getRepository("AppUserBundle:ValidationCode")->findOneBy(array('code' => $v_code)); 

      if ($validationCode != null) 
      { 
       error_log("Code " . $validationCode->getId()); 
       if ($validationCode->isActive()) 
       { 
        $user->setValidationCode($validationCode); 
        $userReactivated = true; 

        $user->setLocked(false); 
        $this->em->persist($user); 
        $this->em->flush(); 
       } 
      } 
     } 
    } 

    if (!$userReactivated) 
     return parent::onAuthenticationFailure($request, $exception); 
    else 
    { 
     return true; // TODO: login user and redirect to home page 
    } 
} 

ответ

-1
if (!$userReactivated) { 
    $exception->setUser($user); 
    return parent::onAuthenticationFailure($request, $exception); 
} else { 
    return true; // TODO: login user and redirect to home page 
} 
+0

Исправьте с дополнительной информацией. Только код и «попробуйте» ответы не приветствуются, поскольку они не содержат содержимого, доступного для поиска, и не объясняют, почему кто-то должен «попробовать это». – abarisone