src/EventSubscriber/UserDetailsSubscriber.php line 40

  1. <?php
  2. /*
  3.  * This file is part of the Tabler-Bundle demo.
  4.  * Copyright 2021 Kevin Papst - www.kevinpapst.de
  5.  *
  6.  * For the full copyright and license information, please view the LICENSE
  7.  * file that was distributed with this source code.
  8.  */
  9. namespace App\EventSubscriber;
  10. use App\Entity\User;
  11. use KevinPapst\TablerBundle\Event\UserDetailsEvent;
  12. use KevinPapst\TablerBundle\Model\MenuItemModel;
  13. use KevinPapst\TablerBundle\Model\UserModel;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. use Symfony\Bundle\SecurityBundle\Security;
  16. use Symfony\Component\Security\Core\User\InMemoryUser;
  17. use Symfony\Contracts\Translation\TranslatorInterface;
  18. class UserDetailsSubscriber implements EventSubscriberInterface
  19. {
  20.     private $security;
  21.     private $translator;
  22.     public function __construct(Security $security,TranslatorInterface $translator)
  23.     {
  24.         $this->security = $security;
  25.         $this->translator = $translator;
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             UserDetailsEvent::class => ['onShowUser', 100],
  31.         ];
  32.     }
  33.     public function onShowUser(UserDetailsEvent $event): void
  34.     {
  35.         if (null === $this->security->getUser()) {
  36.             return;
  37.         }
  38.         /* @var $myUser User */
  39.         $myUser = $this->security->getUser();
  40.         $user = new UserModel($myUser->getId(), $myUser->getUserIdentifier());
  41.         $user->setId($myUser->getId());
  42.         $user->setName($myUser->getFirstname().' '.$myUser->getLastname());
  43.         //$user->setTitle('demo usedfdsfdsr');
  44.         $user->setTitle($this->translator->trans('lawOfficeName',[],'translation').': '.$myUser->getLawOffice()->getLawOfficeName());
  45.         $user->setAvatar('img/default_avatar.png');
  46.         $event->setUser($user);
  47.         $event->addLink(new MenuItemModel('profile', $this->translator->trans('My profile',[],'translation'), 'app_user_show',['id'=>$myUser->getId()],'fa fa-address-card'));
  48.     }
  49. }