api/ApiBundle/EventListener/AuthenticationFailureListener.php line 30

Open in your IDE?
  1. <?php
  2. namespace Pmag\ApiBundle\EventListener;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationFailureEvent;
  4. use Lexik\Bundle\JWTAuthenticationBundle\Response\JWTAuthenticationFailureResponse;
  5. use Pmag\ApiBundle\Entity\Client;
  6. use Pmag\ApiBundle\Manager\ClientManager;
  7. /**
  8.  * AuthentificationFailureListener
  9.  * @package Pmag\ApiBundle\EventListener
  10.  * @author Daly Ala <rafin_ala03@hotmail.fr>
  11.  **/
  12. class AuthenticationFailureListener
  13. {
  14.     private $cm;
  15.     public function __construct(ClientManager $cm)
  16.     {
  17.         $this->cm $cm;
  18.     }
  19.     /**
  20.      * @param AuthenticationFailureEvent $event
  21.      */
  22.     public function onAuthenticationFailureResponse(AuthenticationFailureEvent $event)
  23.     {
  24.         $user $this->cm->getClientByPin($event->getException()->getToken()->getUser());
  25.         if ($user instanceof Client ) {
  26.             if($user->isActive() == true){
  27.             $this->cm->IncreaseNumberOfLoginFailure($user);
  28.             if ($user->getNbloginFailure() == 3) {
  29.                 $this->cm->blockAccountOnAuthenticationFailure($user);
  30.                 $data = [
  31.                     'status' => '401 Unauthorized',
  32.                     'message' => 'you have failed to connect several times , your account will be blocked ',
  33.                 ];
  34.                 $response = new JWTAuthenticationFailureResponse($data);
  35.                 $event->setResponse($response);
  36.             }
  37.             }elseif( $user->isActive() == false)
  38.             {
  39.                 $data = [
  40.                     'status' => '401 Unauthorized',
  41.                     'message' => 'Bad credentials, Account blocked',
  42.                 ];
  43.                 $response = new JWTAuthenticationFailureResponse($data);
  44.                 $event->setResponse($response);
  45.             }
  46.             return;
  47.         }
  48.         return;
  49.     }
  50. }