Bonjour,
j'ai un problème de redirection avec mon programme, j'ai l'erreur suivante :Attempted to call an undefined method named "setResponse" of class "Symfony\Component\Security\Http\Event\InteractiveLoginEvent"
j'aimerai en fait être rediriger vers la page d'index ou homepage lorsque je ne possède pas de nom de domaine.
Voici mon code :
class LoginListener implements EventSubscriberInterface
......
public function __construct(EntityManager $e, ContainerInterface $cont,UrlGeneratorInterface $rout)
{
$this->em = $e;
$this->router = $rout;
$this->container = $cont;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::SECURITY_IMPLICIT_LOGIN => 'onSecurityInteractiveLogin',
);
}
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$session = $event->getRequest()->getSession();
$user = $this->container->get('security.context')->getToken()->getUser();
$route = 'homepage';
$url = $this->router->generate($route);generate($route);
if(!$session->get('sessionDomaine'))
{
$this->container->get('security.context')->setToken(null);
$session->getFlashBag()->add('error', 'Veuillez saisir un nom de domaine');
$response = new RedirectResponse($url);
$event->setResponse($response);
}
else
{
$domaine = $session ->get('sessionDomaine');
$sql = "SELECT u
FROM ApplicationSonataUserBundle:User u
LEFT JOIN u.domaines d
WHERE d.nom= ?1
AND u.id = ?2" ;
$query = $this->em->createQuery($sql);
$query->setParameter(1, $domaine->getNom());
$query->setParameter(2, $user->getId());
$result = $query->getOneOrNullResult();
if(!$result)
{
$this->container->get('security.context')->setToken(null);
$session->getFlashBag()->add('error', 'Vous n\'appartenez pas à ce domaine');
}
}
}
}
mon service :
app.form.login_utilisateur_listener:
class: AppBundle\EventListener\LoginListener
arguments: ["@doctrine.orm.entity_manager","@service_container","@router"]
tags:
- { name: kernel.event_listener, alias: app_user_login, event: security.interactive_login, method: onSecurityInteractiveLogin}
Je voudrais savoir comment résoudre ce problème de redirection, je ne comprends pas pourquoi cela ne fonctionne pas.
Je vous remercie