src/App/EventListener/AuthenticationSuccessListener.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\User;
  4. use App\Handler\Logger\User\UsersLogsHandler;
  5. use App\Handler\Logger\User\UsersLogsOptions;
  6. use App\Repository\Company\PersonRepository;
  7. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
  11. use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
  12. class AuthenticationSuccessListener
  13. {
  14.     private PersonRepository $personRepository;
  15.     private NormalizerInterface $normalizer;
  16.     private UsersLogsHandler $usersLogsHandler;
  17.     private RequestStack $requestStack;
  18.     public function __construct(
  19.         PersonRepository $personRepository,
  20.         NormalizerInterface $normalizer,
  21.         UsersLogsHandler $usersLogsHandler,
  22.         RequestStack $requestStack
  23.     )
  24.     {
  25.         $this->personRepository $personRepository;
  26.         $this->normalizer $normalizer;
  27.         $this->usersLogsHandler $usersLogsHandler;
  28.         $this->requestStack $requestStack;
  29.     }
  30.     public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
  31.     {
  32.         $data $event->getData();
  33.         /** @var User $user */
  34.         $user $event->getUser();
  35.         $roles $user->getRoles();
  36.         $person $user->getPerson();
  37.         $company $user->getCompany();
  38.         $personArray $this->normalizer->normalize($personnull, [
  39.             AbstractNormalizer::ATTRIBUTES => [
  40.                 'id',
  41.                 'name',
  42.                 'middleName',
  43.                 'surname',
  44.                 'birthday',
  45.             ],
  46.         ]);
  47.         if (!$user instanceof UserInterface) {
  48.             return;
  49.         }
  50.         $person $this->personRepository->findOneBy([
  51.             'relatedUser' => $user,
  52.         ]);
  53.         $userArray $this->normalizer->normalize($usernull, [
  54.             AbstractNormalizer::ATTRIBUTES => [
  55.                 'id',
  56.                 'name',
  57.                 'fullName',
  58.                 'surname',
  59.                 'email',
  60.                 'tempPassword',
  61.             ],
  62.         ]);
  63.         $avatar '/assets/img/blank_avatar.png';
  64.         if (null !== $person && null !== $person->getAvatar()) {
  65.             $avatar $person->getAvatar();
  66.         }
  67.         $companyName null;
  68.         if (null !== $company ) {
  69.             $companyName $company->getName();
  70.             $companyUid $company->getUid();
  71.             $companyMainUid $company->getUid();
  72.             if ($company->getParent() !== null) {
  73.                 $companyMainUid $company->getParent()->getUid();
  74.             } 
  75.         }
  76.         $data['user'] = [
  77.             'avatar' => $avatar,
  78.             'person' => $personArray,
  79.             'company' => $companyName,
  80.             'companyUid' => $companyUid,
  81.             'companyMainUid' => $companyMainUid,
  82.             'user' => $userArray
  83.         ];
  84.         if (null !== $roles) {
  85.             if (in_array('ROLE_SYSTEM'$roles)) {
  86.                 $data['role'] = 'ROLE_SYSTEM';
  87.             } elseif (in_array('ROLE_COMPANY_MANAGER'$roles)) {
  88.                 $data['role'] = 'ROLE_COMPANY_MANAGER';
  89.             } elseif (in_array('ROLE_BACKOFFICE'$roles)) {
  90.                 $data['role'] = 'ROLE_BACKOFFICE';
  91.             } elseif (in_array('ROLE_BACKOFFICE_OPERATION'$roles)) {
  92.                 $data['role'] = 'ROLE_BACKOFFICE_OPERATION';
  93.             } elseif (in_array('ROLE_BACKOFFICE_FLIGHT'$roles)) {
  94.                 $data['role'] = 'ROLE_BACKOFFICE_FLIGHT';
  95.             } elseif (in_array('ROLE_BACKOFFICE_ACCOUNT_USER'$roles)) {
  96.                 $data['role'] = 'ROLE_BACKOFFICE_ACCOUNT_USER';
  97.             } elseif (in_array('ROLE_BACKOFFICE_ACCOUNT_USER'$roles)) {
  98.                 $data['role'] = 'ROLE_BACKOFFICE_ACCOUNT_USER';
  99.             } elseif (in_array('ROLE_COMPANY_TRAVEL_APPROVER'$roles)) {
  100.                 $data['role'] = 'ROLE_COMPANY_TRAVEL_APPROVER';
  101.             } elseif (in_array('ROLE_COMPANY_USER'$roles)) {
  102.                 $data['role'] = 'ROLE_COMPANY_USER';
  103.             } elseif (in_array('ROLE_USER'$roles)) {
  104.                 $data['role'] = 'ROLE_USER';
  105.             }
  106.         }
  107.         $userLog $this->usersLogsHandler->handle(UsersLogsOptions::fromArray([
  108.             'createdBy' => $event->getUser(),
  109.             'ipAddress' => $this->requestStack->getCurrentRequest()->getClientIp(),
  110.             'status' => 'SUCCESS'
  111.         ]));
  112.         $event->setData($data);
  113.     }
  114. }