Foros del Web » Programando para Internet » PHP » Symfony »

Problemas Routing Compartidas

Estas en el tema de Problemas Routing Compartidas en el foro de Symfony en Foros del Web. Hola me tope con el siguiente problema y no puedo hallar la solución por eso este post, mi problema es el siguiente para hacerla simple ...
  #1 (permalink)  
Antiguo 17/11/2011, 08:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 8 meses
Puntos: 1
Problemas Routing Compartidas

Hola me tope con el siguiente problema y no puedo hallar la solución por eso este post, mi problema es el siguiente para hacerla simple supongamos que tengo dos tipos de usuarios digamos Roles= {Usuario y Admin} y digamos que dentro de mi aplicacion quiero que compartan ciertas rutas en la aplicación como por ejemplo CREAR POST si estariamos hablando de un foro, el problema es como el routing.yml las rutas igual las toma del ultimo archivo que leyo me intenta un cambio de perfil y como no hay permisos no me deja ingresar. o me cambia en la URL del navegador de miweb/Administrador/Cont/operacion a miweb/Usuario/Cont/operacion y no quiero que suceda eso.

Mis Archivos asi se dan una mejor idea

Dentro de app/config/routing.yml
Código:
usuario:
    resource: "@MiBundle/Resources/config/usuario_routing.yml"
    prefix:   /Usuario

admin:
    resource: "@MiBundle/Resources/config/admin_routing.yml"
    prefix:   /Administrador



Dentro de Resources/config/admin_routung.yml
No le den importancia a las controladores y demas puse simplemente operaciones que solo un admin podría hacer como bloquear y cambiar el rol para que quede claro, el ultimo es el archivo de routing que tendria las rutas compartidas.
Código:
MiBundle_admin_bloquear_usuario:
    pattern:  /bloquer_usuario
    defaults: { _controller: MiBundle:Usuario:bloquer }
    

MiBundle_admin_subir_rol:
    pattern:  /subir_rol
    defaults: { _controller: MiBundle:Usuario:subir }

#En el archivo de abajo me gustaría poner las rutas que pueden compartir los usuarios  y administrador como crear un Post 
MiBundle_compartidas:
    resource: "@MiBundle/Resources/config/compartidas_routing.yml"
Ahora el problema es que si pongo ultimo en el app/config/routing.yml el routing del administrador me intenta un cambio de perfil y me da acceso denegado.

Y si pongo ultimo el routing de usuario en el app/config/routing.yml me cambia en la barra del navegar a miweb/Usuario/Cont/operacion y no quiero que suceda eso, quiero que quede con el prefijo que seleccione miweb/Administrador/Cont/operacion

Desde ya muchas gracias y espero haberme explicado bien.

Saludos.

Nico.
  #2 (permalink)  
Antiguo 17/11/2011, 09:15
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Problemas Routing Compartidas

porque no le haces un requirements a tu ruta?? fijate el ejemplo que colocan con el lenguaje de la página creo que te da la mejor explicacion para tu caso en caso de que entendiera bien tu duda, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 17/11/2011, 11:14
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problemas Routing Compartidas

Me parece que me he explicado mal, ya que la rutas estan correctas como estan, el problema es de donde las lee symfony 2 y como symfony las empieza a buscar en el ultimo ruta que se coloco en el routing.yml en la carpeta app/config y la encuentra ahí me quiere agregar el prefijo que le coloco en el ultimo del routing.yml es decir si en la ultima ruta coloco el prefijo /Administrador (Como es el caso de abajo "app/config/routing.yml") me quiere agregar el prefijo /Administrador aunque el que este logueado sea un usuario y la deberia leer de usuario_routing.yml pero como esta ultimo esta @MiBundle/Resources/config/admin_routing.yml la comienza a buscar ahi y la encuentra ya que comparten ciertas rutas pretende poner el prefio /Administracio.
La solucion poco practica que encuentro es cambiar los nombres de las rutas y mediante un is_granted("ROLE_ADMIN") o is_granted("ROLE_USER") en la vista mostrar una o otra ruta pero me parece muy poco practico como ya comente, ya que para realizar un comentario o para realizar un post tanto el admin como el usuario deberian ver lo mismo para que crear dos rutas para acceder al mismo lado, si lo hago seria simplemente para que me agrege el prefijo correcto.

Ahi van los archivos como para que se den una mejor idea

app/config/security.yml

Código:
access_control:
        - { path: ^/Usuario           , roles: ROLE_USER }
        - { path: ^/Administrador  , roles: ROLE_ADMIN }
        - { path: ^/registro            , roles: IS_AUTHENTICATED_ANONYMOUSLY }
app/config/routing.yml

Código:
usuario:
    resource: "@MiBundle/Resources/config/usuario_routing.yml"
    prefix:   /Usuario

admin:
    resource: "@MiBundle/Resources/config/admin_routing.yml"
    prefix:   /Administrador


/resources/config/usuario_routing.yml

Código:
#Compartido #
MiBundle_realizar_comentario:
    pattern:  /realizar_comentario
    defaults: { _controller: MiBundle:Comentario:realizar }
/resources/config/admin_routing.yml

Código:
MiBundle_admin_bloquear_usuario:
    pattern:  /bloquer_usuario
    defaults: { _controller: MiBundle:Usuario:bloquer }
    

MiBundle_admin_subir_rol:
    pattern:  /subir_rol
    defaults: { _controller: MiBundle:Usuario:subir }

#Compartido #
MiBundle_realizar_comentario:
    pattern:  /realizar_comentario
    defaults: { _controller: MiBundle:Comentario:realizar }
espero que se haya entendido mejor, mi problema se podria decir es que lea del archivo de enrutamiento correcto para que anteponga el prefijo correcto.

Por lo que he leído tengo que agregar los is_granted en las vistas y realizar dos rutas distintas una para el usuario_routing.yml y otra para admin_routing.yml aunque ambas llamen al mismo controlador y al mismo método del controlador, lo que desearia es que dependiendo del usuario logueado (Usuario o Admin) lea el routing correcto (usuario_routing.yml o admin_routing.yml), creo que me explique mejor en este ultimo parrafo que en todo lo anterior.

Ahora quizás se preguntan porque lo hago así y no de otra manera que seria mas simple, es porque me gusta que cuando se loguea un usuario con rol usuario quede la url quede miweb.com/Usuario/Controlador/metodo es decir siempre quede el prefijo Usuario y cuando se loguea un administrador quede miweb/Administrador/Controlador/metodo, desde ya muchas gracias por leer el post

Gracias por la rápida respuesta carlos_belisario.

Saludos.

Nico.

Última edición por nicostone; 17/11/2011 a las 12:12

Etiquetas: symfony2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:49.