src/EventSubscriber/NavbarUserSubscriber.php line 40

Open in your IDE?
  1. <?php
  2. // src/EventSubscriber/NavbarUserSubscriber.php
  3. namespace App\EventSubscriber;
  4. use KevinPapst\AdminLTEBundle\Event\ShowUserEvent;
  5. use KevinPapst\AdminLTEBundle\Event\NavbarUserEvent;
  6. use KevinPapst\AdminLTEBundle\Event\SidebarUserEvent;
  7. use KevinPapst\AdminLTEBundle\Model\UserModel;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\Security\Core\Security;
  10. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  11. use KevinPapst\AdminLTEBundle\Model\MenuItemModel;
  12. use KevinPapst\AdminLTEBundle\Model\DropdownMenuItemModel;
  13. use KevinPapst\AdminLTEBundle\Model\NavBarUserLink;
  14. use Symfony\Component\HttpFoundation\RequestStack;
  15. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  16. class NavbarUserSubscriber implements EventSubscriberInterface
  17. {
  18. private $security;
  19. private $urlGenerator;
  20. public function __construct(Security $security, UrlGeneratorInterface $urlGenerator, RequestStack $requestStack, FlashBagInterface $flashBag)
  21. {
  22. $this->security = $security;
  23. $this->urlGenerator = $urlGenerator;
  24. }
  25. public static function getSubscribedEvents(): array
  26. {
  27. return [
  28. NavbarUserEvent::class => ['onShowUser', 100],
  29. SidebarUserEvent::class => ['onShowUser', 100],
  30. ];
  31. }
  32. public function onShowUser(ShowUserEvent $event)
  33. {
  34. if (null === $this->security->getUser()) {
  35. return;
  36. }
  37. /* @var $myUser User */
  38. $myUser = $this->security->getUser();
  39. $user = new UserModel();
  40. $user
  41. ->setId($myUser->getId())
  42. ->setName($myUser->getUsername())
  43. ->setUsername($myUser->getUsername())
  44. ->setIsOnline(true)
  45. ->setTitle('demo user')
  46. // ->setAvatar($myUser->getAvatar())
  47. // ->setMemberSince($myUser->getRegisteredAt())
  48. ;
  49. $logoutUrl = $this->urlGenerator->generate('fos_user_security_logout');
  50. $logoutItem = new MenuItemModel('logout', 'Logout', $logoutUrl, [], 'fas fa-sign-out-alt');
  51. // $user->setDropdownItems([$logoutItem]);
  52. $logout_link = new NavBarUserLink('Logout', 'fos_user_security_logout', []);
  53. $event->setUser($user);
  54. $event->addLink($logout_link);
  55. $event->setShowLogoutLink(true);
  56. }
  57. }