symfony1 - Symfony sfDoctrineGuardPlugin consulta de inicio de sesión personalizada
symfony-1.4 doctrine-1.2 (3)
Uso symfony sfDoctrineGuardPlugin para administrar la autenticación tanto para los usuarios frontend como para los usuarios de back-end. Está bien, excepto que no quiero que los usuarios frontend puedan iniciar sesión en la aplicación de back-end. Puedo configurar credenciales, pero las credenciales se verifican después de que un usuario se autentica. Lo que quiero es tener sigin en forma para nunca validar para un usuario, que no está en un grupo de back-end. ¿Cómo puedo hacer esto?
Aquí hay una idea: puede intentar crear un post-validador personalizado para el formulario de inicio de sesión. Aquí hay un resultado de Google:
En este validador, puede verificar si el usuario pertenece al grupo en cuestión y luego arrojar un error en consecuencia. El usuario no se autenticará.
Creo que encontré una mejor solución. El plugin sfDoctrineGuard tiene su propio validador de publicaciones que busca una opción de recuperación para el usuario.
//app.yml
all:
sf_guard_plugin:
retrieve_by_username_callable: sfGuardUser::getForBackend
//sfGuardUser.class.php
public static function getForBackend($username)
{
$query = Doctrine::getTable(''sfGuardUser'')->createQuery(''u'')
->leftJoin(''u.Groups g'')
->leftJoin(''g.Permissions p'')
->where(''u.username = ? OR u.email_address = ?'', array($username, $username))
->addWhere(''u.is_active = ?'', true)
->addWhere(''p.name = ?'', ''backend'');
return $query->fetchOne();
}
Creo que solo debes agregar:
storage:
class: sfSessionStorage
param:
session_name: sf_backend
al final de su backend/config/factories.yml
Por defecto, Symfony comparte cookies de sesión, con esta solución, Symfony separa estas cookies.