src/EventSubscriber/SSOSubscriber.php line 27
<?phpnamespace App\EventSubscriber;use App\Repository\Pmi\UserRepository;use App\Security\PmiAuthenticator;use Symfony\Bundle\SecurityBundle\Security;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpKernel\Event\ResponseEvent;use Symfony\Component\HttpKernel\KernelEvents;class SSOSubscriber implements EventSubscriberInterface{public function __construct(private UserRepository $userRepository,private Security $security,){}public static function getSubscribedEvents(): array{return [KernelEvents::RESPONSE => [['onKernelRequest', 10]],];}public function onKernelRequest(ResponseEvent $event){$request = $event->getRequest();if (!$request->hasPreviousSession()) {return;}if (null === $this->security->getUser() && null !== $hash = $request->query->get('sso')) {if (null !== $user = $this->userRepository->findBySSO($hash)) {$this->security->login($user, PmiAuthenticator::class);$event->setResponse(new RedirectResponse(preg_replace('#\?sso=.+#', '', $request->getRequestUri())));}}}}