Sonata Admin: cómo redireccionar un usuario según su rol

Escenario

Una aplicación symfony 4.4 con el framework Sonata Admin 3.78.1 cuenta con una página de login para que los administradores del sitio puedan gestionar sus clientes. Ahora queremos que los clientes puedan usar la misma página de login para acceder a sus datos personales como, por ejemplo, sus facturas. Para la gestión de usuarios la aplicación utiliza los paquetes friendsofsymfony/user-bundle 2.1.2 y sonata-project/user-bundle 4.9.0

Problema

En config/packages/security.yaml se puede configurar el comportamiento de la aplicación tras un login exitoso, en el bloque de firewall. La clave default_target_path está definida con la ruta del panel de control para que el usuario autenticado sea dirigido a esa página. Al principio cambié la ruta con la de un controlador en /admin/default que, según el rol del usuario dirigía a un sitio u otro: Además añadí el rol ROLE_CUSTOMER y un par de reglas en security.yaml para permitir el acceso no autenticado a la ruta del controlador, y a los clientes del rol ROLE_CUSTOMER a sus páginas: Esta solución funciona para redireccionar un cliente a su página después de autenticarse. Pero si accede a la página de login estando ya autenticado era dirigido a la página del panel de control con el esperado error de acceso denegado.

Solución

El problema es que por defecto la acción de Sonata Admin (definida en Sonata\UserBundle\Action\LoginAction es dirigir al usuario a la ruta sonata_admin_dashboard. Una manera de solucionarlo es declarar esa ruta en config/routes.yaml para que dirija al controlador de antes que comprueba el rol del usuario:

Publicaciones Similares

  • Modelos locales

    Llevaba tiempo queriendo correr uno de esos modelos generativos en mi propia máquina. Libre de otras prioridades, hoy por fin he tenido ocasión de comprobar si era verdad que modelos de la familia GPT4All o LlamaCpp estaban preparados para ser consumidos en ordenadores personales. De los centenares de proyectos que han proliferado desde el advenimiento…

  • Instalación y configuración de Guacamole 1.3

    Escenario Necesitamos acceder de manera remota a nuestro entorno de trabajo y hemos decidido que guacamole es nuestra mejor opción. Permite el uso de protocoles estándares como VNC, RDP y SSH No requiere instalar software en las máquinas de los usuarios. Gracias a HTML5, una vez instalado en un servidor, puedes acceder a tu escritorio…

  • Configuración Jackrabbit + tomcat + aws s3

    El fin de este tutorial es configurar un servidor jackrabbit que utilice como almacenamiento el servicio S3 de Amazon AWS. Esta fuera del alcance del mismo la configuración del servicio S3 o como emplear el servidor jackrabbit en una aplicación. Apache Jackrabbit es un repositorio de contenido conforme con las especificaciones del API JCR. Ofrece…

  • Sonata Admin: el calendario no se cierra

    Escenario Incluir un filtro de rango de fechas en SonataAdmin que use un calendario para seleccionar la fecha es más o menos fácil. Primero añadimos el siguiente bloque en el admin de nuestra entidad:

    Y la siguiente clave bajo form_themesen el fichero config/packages/twig.yaml:

    Problema El calendario no se cierra automáticamente cuando se selecciona…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *