Reputation: 67
i have a problem i dont know how to stop it. i have an infinite loop on a redirect route, i tried to redirect a user if he has not accept some condition this is my code :
/**
* AcceptanceListener constructor.
* @param $router
* @param TokenStorageInterface $tokenStorage
* @param UserManager $userManager
* @param AuthorizationChecker $checker
*/
public function __construct(
$router,
TokenStorageInterface $tokenStorage,
UserManager $userManager,
AuthorizationChecker $checker
) {
$this->router = $router;
$this->tokenStorage = $tokenStorage;
$this->userManager = $userManager;
$this->role = $checker;
}
/**
* To checked all the routes
*
* @param GetResponseEvent $event
*/
public function onKernelRequest(GetResponseEvent $event)
{
$user = $this->tokenStorage->getToken()->getUser();
if ($this->role->isGranted('ROLE_USER')
&& !$this->userManager->hasAccepted($user)
) {
$this->redirect = $this->router->generate('accept_');
$event->setResponse(new RedirectResponse($this->redirect));
}
}
someone can help me please?
Upvotes: 1
Views: 624
Reputation: 594
Check if the route is not the same, then redirect
public function onKernelRequest(GetResponseEvent $event)
{
$route_name = $event->getRequest()->get('_route');
if ($route_name != 'accept_') {
$user = $this->tokenStorage->getToken()->getUser();
if ($this->role->isGranted('ROLE_USER')
&& !$this->userManager->hasAccepted($user)
) {
$this->redirect = $this->router->generate('accept_');
$event->setResponse(new RedirectResponse($this->redirect));
}
}
}
Upvotes: 2