src/EventListener/JWTCreatedListener.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Repository\LocationRepository;
  4. use App\Repository\UserLocationRepository;
  5. use App\Repository\UserRepository;
  6. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  7. class JWTCreatedListener
  8. {
  9.     private UserRepository $userRepository;
  10.     private LocationRepository $locationRepository;
  11.     private UserLocationRepository $userLocationRepository;
  12.     public function __construct(UserRepository $userRepositoryLocationRepository $locationRepositoryUserLocationRepository $userLocationRepository)
  13.     {
  14.         $this->userRepository $userRepository;
  15.         $this->locationRepository $locationRepository;
  16.         $this->userLocationRepository $userLocationRepository;
  17.     }
  18.     /**
  19.      * @param JWTCreatedEvent $event
  20.      *
  21.      * @return void
  22.      */
  23.     public function onJWTCreated(JWTCreatedEvent $event)
  24.     {
  25.         $user $this->userRepository->findOneBy(['email' => $event->getData()['username']]);
  26.         $payload $event->getData();
  27.         $payload['email'] = $event->getData()['username'];
  28.         $payload['id'] = $user->getId();
  29.         $payload['name'] = $user->getName();
  30.         $payload['surnames'] = $user->getSurnames();
  31.         $payload['location'] = null;
  32.         if ($user->getIdUserRole()->getKey() != "ROLE_MULTI_STORE") {
  33.             $location $this->userLocationRepository->findOneBy(['idUser' => $user]);
  34.             $payload['location'] = $location ? [
  35.                 'customerRefPo' => $location->getIdLocation()->getCustomerRefPo(),
  36.                 'customerRefPoTov' => $location->getIdLocation()->getCustomerRefPoTov(),
  37.                 'name' => $location->getIdLocation()->getName(),
  38.                 'id' => $location->getIdLocation()->getId()
  39.             ] : null;
  40.         }
  41.         $payload['region'] = $user->getIdRegion() ? ["id" => $user->getIdRegion()->getId(), "name" => $user->getIdRegion()->getName()] : null;
  42.         $payload['subregion'] = $user->getIdSubregion() ? ["id" => $user->getIdSubregion()->getId(), "name" => $user->getIdSubregion()->getName()] : null;
  43.         $payload['country'] = $user->getIdCountry() ? ["id" => $user->getIdCountry()->getId(), "name" => $user->getIdCountry()->getName()] : null;
  44.         $payload['isAllRegion'] = $user->getIsAllRegion();
  45.         $payload['isAllSubregion'] = $user->getIsAllSubregion();
  46.         $payload['isAllStore'] = $user->getIsAllLocation();
  47.         $payload['company_logo'] = ($user->getIdCompany()) ? $user->getIdCompany()->getImage() : null;
  48.         $payload['company_name'] = ($user->getIdCompany()) ? $user->getIdCompany()->getName() : null;
  49.         $payload['company_id'] = ($user->getIdCompany()) ? $user->getIdCompany()->getId() : null;
  50.         $payload['company_isSeparateOrdersBasedOnCatalogs'] = ($user->getIdCompany()) ? $user->getIdCompany()->getIsSeparateOrdersBasedOnCatalogs() : null;
  51.         $payload['isHideAvailability'] = ($user->getIdCompany()) ? $user->getIdCompany()->getIsHideAvailability() : null;
  52.         $payload['isAllowedReportProductionPlan'] = $user->getIsAllowedReportProductionPlan();
  53.         $payload['isAllowedReportSupplyChain'] = $user->getIsAllowedReportSupplyChain();
  54.         $payload['isAllowedReportAvailability'] = $user->getIsAllowedReportAvailability();
  55.         $payload['isAllowedReportConsumption'] = $user->getIsAllowedReportConsumption();
  56.         $payload['isAllowedReportMaxOrder'] = $user->getIsAllowedReportMaxOrder();
  57.         $payload['isAllowedReportStock'] = $user->getIsAllowedReportStock();
  58.         $payload['isAllowedReportStockQty'] = $user->getIsAllowedReportStockQty();
  59.         $payload['isImported'] = $user->getIsImported();
  60.         if (!$user->getIsActive()) {
  61.             $payload = [];
  62.         }
  63.         $event->setData($payload);
  64.     }
  65. }