Example #1
0
 /**
  * @param SmallUserInterface $user
  * @return bool
  */
 protected function handleInvalidLogin(SmallUserInterface $user)
 {
     $maxTries = $this->collectionOptions->getLoginOptions()->getExploit()['try'];
     if (!$maxTries) {
         return false;
     }
     $entityManager = $this->entityManager;
     /**
      * Set LoginHistory
      */
     $class = $this->collectionOptions->getEntityOptions()->getLoginFailed();
     /** @var \PServerCore\Entity\LoginFailed $loginFailed */
     $loginFailed = new $class();
     $loginFailed->setUsername($user->getUsername());
     $loginFailed->setIp($this->ipService->getIp());
     $entityManager->persist($loginFailed);
     $entityManager->flush();
     $time = $this->collectionOptions->getLoginOptions()->getExploit()['time'];
     /** @var \PServerCore\Entity\Repository\LoginFailed $repositoryLoginFailed */
     $repositoryLoginFailed = $entityManager->getRepository($class);
     if ($repositoryLoginFailed->getNumberOfFailLogin4Ip($this->ipService->getIp(), $time) >= $maxTries) {
         $class = $this->collectionOptions->getEntityOptions()->getIpBlock();
         /** @var \PServerCore\Entity\IpBlock $ipBlock */
         $ipBlock = new $class();
         $ipBlock->setExpire(DateTimer::getDateTime4TimeStamp(time() + $time));
         $ipBlock->setIp($this->ipService->getIp());
         $entityManager->persist($ipBlock);
         $entityManager->flush();
     }
     return true;
 }