eventDispatcher = $dispatcher; $this->storage = $storage; } /** * @return array */ public static function getSubscribedEvents(): array { return [ KernelEvents::CONTROLLER => ['prepareUserProfile', 200] ]; } /** * @param KernelEvent $event */ public function prepareUserProfile(KernelEvent $event) { if (!$this->canHandleEvent($event)) { return; } /** @var User $user */ $user = $this->storage->getToken()->getUser(); $event = new PrepareUserEvent($user); $this->eventDispatcher->dispatch($event); } /** * @param KernelEvent $event * @return bool */ protected function canHandleEvent(KernelEvent $event): bool { // Ignore sub-requests if (!$event->isMasterRequest()) { return false; } // ignore events like the toolbar where we do not have a token if (null === $this->storage->getToken()) { return false; } /** @var User $user */ $user = $this->storage->getToken()->getUser(); return ($user instanceof User); } }