<?php
namespace App\EventSubscriber;
use App\Entity\User;
use KevinPapst\AdminLTEBundle\Event\NavbarUserEvent;
use KevinPapst\AdminLTEBundle\Event\ShowUserEvent;
use KevinPapst\AdminLTEBundle\Model\UserModel;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Http\Attribute\CurrentUser;
class NavbarUserSubscriber implements EventSubscriberInterface
{
protected $security;
/**
* NavbarUserSubscriber constructor.
* @param Security $security
*/
public function __construct(Security $security)
{
$this->security = $security;
}
/**
* @return array
*/
public static function getSubscribedEvents(): array
{
return [
NavbarUserEvent::class => ['onShowUser', 100],
];
}
/**
* @param ShowUserEvent $event
*/
public function onShowUser(ShowUserEvent $event)
{
/* @var $realUser User */
$realUser = $this->security->getUser();
if (!is_null($realUser)) {
$adminLteUser = new UserModel();
$adminLteUser
->setId($realUser->getId())
->setIsOnline(true)
->setName($realUser->getFirstName() || $realUser->getLastname()
? $realUser->getFirstName() . ' ' . $realUser->getLastname()
: $realUser->getUserIdentifier()
)
->setUsername($realUser->getUserIdentifier())
->setMemberSince($realUser->getCreatedAt())
;
$event
->setUser($adminLteUser)
->setShowProfileLink(true)
;
}
}
}