src/EventSubscriber/LoginSubscriber.php line 19
<?phpnamespace App\EventSubscriber;use App\Entity\Product;use Doctrine\ORM\EntityManagerInterface;use Doctrine\Persistence\ManagerRegistry;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;use Symfony\Component\HttpFoundation\RequestStack;class LoginSubscriber implements EventSubscriberInterface {private RequestStack $requestStack;public function __construct(RequestStack $requestStack, private readonly ManagerRegistry $em) {$this->requestStack = $requestStack;}public function onLogin(InteractiveLoginEvent $event) {$user = $event->getAuthenticationToken()->getUser();if (!$user || !method_exists($user, 'getBasket')) {return;}// Postavi korpu iz baze u sesiju$session = $this->requestStack->getSession();if (!$session->has('basket') && !is_null($user->getBasket()) && !empty($user->getBasket())) {$basket = $user->getBasket(); // Preuzmi trenutni basket korisnikaforeach ($basket as $key => $item) {$product = $this->em->getRepository(Product::class)->findOneBy(['id' => $item['pid'],'isOutOfStock' => true]);if (!is_null($product)) {unset($basket[$key]); // Ukloni proizvod iz niza}}$session->set('basket', $basket);}}public static function getSubscribedEvents(): array {return [InteractiveLoginEvent::class => 'onLogin',];}}