Capturar evento logout y login en Symfony

JP Juan Pablo Romero Juan Pablo Romero

Juan Pablo Romero

Software Engineer
1 min read.

Este es un post muy corto, en donde comentaré de forma muy rápida como capturar los eventos logout y login en Symfony (puedes leer una introducción al manejo de eventos con Symfony), particularmente cuando se usa el plugin sfGuardUser (bien sea con Propel o Doctrine). Lo primero que se debe tener en cuenta, es sobreescribir el método signOut o signIn (dependiendo de que evento queramos capturar) de la clase sfGuardSecurityUser, modificando la clase myUser de nuestra aplicación. Como ejemplo, sobreescribiré el método

signOut:

<!--?php-->//Archivo ubicado en: SYMFONY_ROOT/apps/mi_aplicacion/lib/myUser.class.php

class myUser extends sfGuardSecurityUser
{
    public function signOut()
    {
        $this->dispatcher->notify(new sfEvent(
                $this,
                'user.logout',
                array('user_id' => $this->getGuardUser()->id)
        ));

        parent::signOut();
    }
}



Con esto estamos notificando al objeto sfEventDispatcher la ocurrencia del evento user.logout desde la clase myUser (primer parámetro del constructor de sfEvent) y estamos pasando como información el identificador del usuario. Posteriormente, debemos asociar un listener a ese evento, el cual lo podemos definir en la clase que configura nuestra aplicación:



<!--?php-->// Archivo ubicado en: SYMFONY_ROOT/apps/mi_aplicacion/config/mi_aplicacionConfiguration.class.php
class mi_aplicacionConfiguration extends sfApplicationConfiguration
{
  public function configure()
  {
      $this->dispatcher->connect('user.logout', array('Eventos','test'));
  }
}



Con esto cada vez que un usuario cierre sesión, se ejecutará el método test de la clase Eventos, el cual deberá recibir como parámetro un objeto de la clase sfEvent. La misma implementación aplicará para el método signIn, para el caso en que el usuario inicie sesión. Espero sea de utilidad.


Written by Juan Pablo Romero

JP Juan Pablo Romero Juan Pablo Romero

Juan Pablo designs and builds robust software solutions with a focus on performance and usability. His problem-solving skills and attention to detail ensure high-quality and efficient applications.

Newsletter

Subscribe to our newsletter:

Read more

Build Once. Own Forever.