Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all articles
Browse latest Browse all 1542

Redirection event listener Symfony

$
0
0

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


Viewing all articles
Browse latest Browse all 1542

Trending Articles