src/EventListener/AuthenticationSuccessListener.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\User;
  4. use App\Repository\AuthGrantRepository;
  5. use Symfony\Component\Serializer\Serializer;
  6. use Symfony\Component\Serializer\Encoder\XmlEncoder;
  7. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  8. use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
  9. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  10. class AuthenticationSuccessListener
  11. {
  12.     private $authGrantRepository;
  13.     public function __construct(AuthGrantRepository $authGrantRepository)
  14.     {
  15.         $this->authGrantRepository $authGrantRepository;
  16.     }
  17.     public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
  18.     {
  19.         $user $event->getUser();
  20.         if ($user) {
  21.             $loggedUserData $user->getLoginData();
  22.             $roles $user->getRoles();
  23.             $allRoles $this->authGrantRepository->findAll();
  24.     
  25.             $ability = [];
  26.             foreach($allRoles as $foo){
  27.                 foreach ($roles as $userRole){ 
  28.                     if (in_array($userRole$foo->getRoles())){
  29.                         $ability[] = [
  30.                             'action'=>$foo->getAction()->getName(),
  31.                             'aubject'=>$foo->getSubject()->getName(),
  32.                             'inverted'=>$foo->getInverted(),
  33.                             'conditions'=>$foo->getConditions()
  34.                         ];
  35.                         break;
  36.                     }
  37.                 }
  38.             }
  39.             $loggedUserData['grants'] = $ability;
  40.             $event->setData([
  41.                 'code' => $event->getResponse()->getStatusCode(),
  42.                 'token' => $event->getData()['token'],
  43.                 'user' =>  $loggedUserData
  44.             ]);
  45.         }
  46.     }
  47. }