Esempio n. 1
0
 /**
  * Checks a request for previous failures
  *
  * @param string  $username
  * @param Request $request
  *
  * @return FailureManager
  *
  * @throws RequireCaptchaException In case a captcha unlock is required
  */
 public function checkFailures($username, Request $request)
 {
     $failures = $this->repository->findLockedFailuresMatching($username, $request->getClientIp());
     if (0 === count($failures)) {
         return;
     }
     if ($this->trials < count($failures) && $this->captcha->isSetup()) {
         $response = $this->captcha->bind($request);
         if ($response->isValid()) {
             foreach ($failures as $failure) {
                 $failure->setLocked(false);
             }
             $this->em->flush();
         } else {
             throw new RequireCaptchaException('Too much failure, require captcha');
         }
     }
     return $this;
 }