Una de las características más habituales de cualquier aplicación es la autentificación de usuarios para asegurar diferentes partes de la aplicación. El plugin sfDoctrineGuardPlugin nos facilita la implementación de esta tarea. Para instalar y habilitar este plugin tenemos que seguir estos sencillos pasos:
- Lo primero que tenemos que hacer es instalar el plugin en nuestro proyecto. Podemos ejecutar la tarea de instalación:
symfony plugin:install sfDoctrineGuardPlugin
para lo que tenemos que tener instalado PEAR, pero como últimamente PEAR y yo no nos hablamos, pues vamos a descargarnos el paquete y lo descomprimimos en la carpeta plugins de nuestro proyecto (lo renombramos quitándole la numeración de la versión: sfDoctrineGuarPlugin). - Ahora activamos el plugin en el archivo config/ProjectConfiguration.class.php de nuestro proyecto:
class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins(array( 'sfDoctrinePlugin', 'sfDoctrineGuardPlugin', '...' )); } } - Reconstruimos el modelo y actualizamos la base de datos:
symfony doctrine:build --all
Ahora ya tenemos el plugin instalado. Lo siguiente que vamos a hacer es cargar los datos de prueba (que consisten en un usuario administrador):
- Copiamos el fichero plugins/sfDoctrineGuardPlugin/data/fixtures/fixtures.yml.sample en data/fixtures/sfGuard.yml y cargamos los datos:
symfony doctrine:data-load
Bien, ya sólo nos queda habilitar los módulos que vayamos a utilizar y configurarlos correctamente.
- En el frontend, abrimos el archivo settings.yml y añadimos el módulo sfGuardAuth y lo configuramos:
all: .settings: enabled_modules: [default, sfGuardAuth] login_module: sfGuardAuth login_action: signin secure_module: sfGuardAuth secure_action: secure
- Editamos la clase myUser.class.php para cambiar la clase de la que hereda:
class myUser extends sfGuardSecurityUser { } - Opcionalmente podemos cambiar el archivo routing.yml añadiendo la siguiente configuración al comienzo del archivo:
sf_guard_signin: url: /login param: { module: sfGuardAuth, action: signin } sf_guard_signout: url: /logout param: { module: sfGuardAuth, action: signout } sf_guard_password: url: /request_password param: { module: sfGuardAuth, action: password } - En el archivo security.yml podemos asegurar los módulos que queramos o la aplicación completa:
default: is_secure: true
Y ya está!!! Ahora si accedemos a cualquier módulo de la aplicación y no estamos autentificados nos pedirá el usuario y el password:

Para el backend podemos habilitar los módulos sfGuardGroup, sfGuardPermission, sfGuardUser que nos permitirán manejar usuarios, grupos y permisos.

Como hago para me que muestre automaticamente el formulario de logueo?