paǵina fragmentadad por roles de usuarios

15 views
Skip to first unread message

Marcelo Prizmic

unread,
Dec 1, 2015, 1:20:01 PM12/1/15
to symfony2-es, symfony-2...@googlegroups.com, symfo...@googlegroups.com
Hola
Tengo una página que muestra bastante información de distinto tipo y algunas parte quiero que puedan ser vistas por algunos roles de usuarios y otras que no puedan ser vistas; es decir quiero renderizar partes de la página de acuerdo a los permisos del usuario logueado. Quiero hacerlo de aluguna forma más o menos elegante que no sea poner 100 veces isGranted() por toda la página.
Que me aconsejan?
Muchas gracias a todos !!!
Marcleo



Miguel Ángel Sánchez Chordi

unread,
Dec 1, 2015, 1:55:32 PM12/1/15
to symfo...@googlegroups.com
Se me ocurre que podrías crear una plantilla twig por cada role con la configuracion de bloques de cada role.


Miguel Ángel Sánchez Chordi
Ingeniero Informático


--
Has recibido este mensaje porque estás suscrito al grupo "Symfony Valencia" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a symfony-vlc...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/symfony-vlc/CAHNdAOp4tBU0GkmXG9h00ECOZUECQ8E1nyXBwYYLyOg2xi09sQ%40mail.gmail.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Javi Motos

unread,
Dec 2, 2015, 3:20:57 AM12/2/15
to Symfony Valencia

Yo tiraría por la solución que propone Miguel Ángel. Mediante bloques en la plantilla twig. 

Marcelo Prizmic

unread,
Dec 2, 2015, 10:03:46 AM12/2/15
to symfo...@googlegroups.com
Gracias a todos!!
voy a ir probando y luego les cuento la experiencia
Marcelo

Marcelo Prizmic

unread,
Dec 11, 2015, 10:13:57 AM12/11/15
to symfo...@googlegroups.com
De las propuestas que me hicieron saqué las siguientes conclusiones que comparto.

Trabajando con una plantilla con distintos bloques para distintos usuarios el problema es que si tengo usuarios nuevos tengo que tocar la plantilla. Además si esta cuestión se me presenta en un número creciente de páginas debería tener un número creciente de plantilla con este tratamiento  y la perpectiva es que se hace muy difícil de mantener.
Además lo información a renderizar discriminada por usuario puede llegar a ser muy poca (por ejemplo 2 columans en el medio de una tabla más grande) y enhebrada con todo el resto con lo cual no es tan clara y directa la división en bloques.

Crear una plantilla por cada role tiene consecuencias similares al párrafo anterior. Si en la mayoría de las páginas del sistema tengo que discrimir información por rol se me generaría una cantidad de plantillas muy grande: (cantidad de roles * cantidad de páginas del sistema).

La solución de @Secutiry me pareció un poco rígida. Si en el sistema hay pocos roles y fijos puede funcionar, pero mi idea a futuro es que cada usuario más allá del rol pueda tener permisos personalizados sobre cada acción. Además preferiero que las posibles modificaciones a los permisos de los usuarios o los roles impliquen, tal vez, modificar datos de una tabla antes que ir a tocar una annotation a los Action involucrados.

Finalmente decidí resolver el problema centralmente en el controller. Preparo la información en "paquetes" para pasarle al template y en el controller manejo isgranted para ver que "paquete" va lleno o vacío. Luego paso al tempate todas las variables que contienen los paquetes de información y en el template, antes de mostrar la información, pregunto si la variable contiene algo o no.

De esta forma toda modificación a los roles o los permisos de los roles impactan en el controller. En los template no se hace mención a ningún rol ni hace falta modificarlos en caso de haber cambios en los permisos.

Que les parece?
gracias a todos
Marcelo






Reply all
Reply to author
Forward
0 new messages