['onKernelRequest'] ]; } public function onKernelRequest(RequestEvent $event): void { // ignore sub-requests if (!$event->isMainRequest()) { return; } // ignore events like the toolbar where we do not have a token if (null === ($token = $this->storage->getToken())) { return; } $uri = $event->getRequest()->getRequestUri(); // never require 2FA on API calls if (str_starts_with($uri, '/api/') || stripos($uri, '/register/') !== false) { return; } $user = $token->getUser(); if ($user instanceof User) { if (stripos($uri, '/wizard/') !== false) { return; } if (!$this->security->isGranted('IS_AUTHENTICATED_FULLY')) { return; } foreach (User::WIZARDS as $wizard) { if (!$user->hasSeenWizard($wizard)) { $response = new RedirectResponse($this->urlGenerator->generate('wizard', ['wizard' => $wizard])); $event->setResponse($response); return; } } } } }