src/EventSubscribers/Logout/FinishTimetableOnLogoutSubscriber.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscribers\Logout;
  3. use App\Entity\User;
  4. use App\Services\TimetableService;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Security\Http\Event\LogoutEvent;
  7. use Throwable;
  8. class FinishTimetableOnLogoutSubscriber implements EventSubscriberInterface
  9. {
  10.     /** @var TimetableService */
  11.     private TimetableService $timetableService;
  12.     public function __construct(TimetableService $timetableService)
  13.     {
  14.         $this->timetableService $timetableService;
  15.     }
  16.     public function onLogout(LogoutEvent $event)
  17.     {
  18.         try {
  19.             $user $event->getToken()->getUser();
  20.             if ($user instanceof User) {
  21.                 $this->timetableService->finish($user);
  22.             }
  23.         } catch (Throwable $t) {
  24.             throw $t;
  25.         }
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             LogoutEvent::class => 'onLogout'
  31.         ];
  32.     }
  33. }