Cada plugin dispone de su propio archivo README donde se explica cómo se configura. A continuación se muestra cómo configurar el plugin sfGuardPlugin
. Como se trata de un plugin que incluye varias clases de su propio modelo de datos para gestionar usuarios, grupos y permisos, lo primero que debemos hacer es volver a generar todas las clases del modelo:
$ php symfony propel:build-all-load --no-confirmation
Nota Recuerda que la tarea propel:build-all-load
borra todas las tablas de la base de datos antes de volver a crearlas. Si no quieres borrar las tablas, puedes generar los modelos, formularios y filtros y después, puedes crear las nuevas tablas ejecutando las sentencias SQL generadas en el directorio data/sql
.
Como siempre que se crean nuevas clases, no te olvides de borrar la cache de Symfony:
$ php symfony cc
Como el plugin sfGuardPlugin
añade varios métodos a la clase del usuario, tienes que modificar la clase de la que hereda myUser
a sfGuardSecurityUser
:
// apps/backend/lib/myUser.class.php
class myUser extends sfGuardSecurityUser
{
}
El plugin sfGuardPlugin
incluye una acción llamada signin
en el módulo sfGuardAuth
para autenticar a los usuarios:
Modifica el archivo settings.yml
para cambiar la acción utilizada por defecto en la página de login:
# apps/backend/config/settings.yml
all:
.settings:
enabled_modules: [default, sfGuardAuth]
# ...
.actions:
login_module: sfGuardAuth
login_action: signin
# ...
Como los plugins están disponibles en todas las aplicaciones del proyecto, tienes que activar de forma explícita los módulos que quieres utilizar mediante la opción enabled_modules
.
Por último, crea el usuario de tipo administrador:
$ php symfony guard:create-user fabien ConTraSenA $ php symfony guard:promote fabien
Nota El plugin sfGuardPlugin
incluye tareas para gestionar usuarios, grupos y permisos directamente desde la línea de comandos. Si quieres ver todas las tareas disponibles para el namespace guard
, puedes utilizar la tarea list
:
$ php symfony list guard
El siguiente paso consiste en no mostrar la barra del menú si el usuario no está autenticado:
// apps/backend/templates/layout.php
<?php if ($sf_user->isAuthenticated()): ?>
<div id="menu">
<ul>
<li><?php echo link_to('Jobs', '@jobeet_job') ?></li>
<li><?php echo link_to('Categories', '@jobeet_category') ?></li>
</ul>
</div>
<?php endif; ?>
Por otra parte, cuando el usuario está autenticado, tenemos que mostrar un enlace para la acción de desconectar que incluye el plugin sfGuardPlugin
:
// apps/backend/templates/layout.php
<li><?php echo link_to('Logout', '@sf_guard_signout') ?></li>
Nota Si quieres ver todas las rutas que define sfGuardPlugin
, utiliza la tarea app:routes
.
Para completar la parte de administración de Jobeet, vamos a añadir un módulo para gestionar los usuarios de tipo administrador. Afortunadamente, el plugin sfGuardPlugin
ya incluye un módulo de este tipo. Para utilizarlo, debes activar el módulo llamado sfGuardAuth
en el archivo de configuración settings.yml
:
# apps/backend/config/settings.yml
all:
.settings:
enabled_modules: [default, sfGuardAuth, sfGuardUser]
Y por último, añade un enlace en el menú:
// apps/backend/templates/layout.php
<li><?php echo link_to('Users', '@sf_guard_user') ?></li>
Y eso es todo lo que tenemos que hacer para disponer de una completa gestión de usuarios, grupos y permisos.