Buen día a todos, explico cual es la situación:
Tengo un sistema basado en kumbia 0.4.7, la seguridad usando phpgacl y una clase Usuario que almacena el login. El objeto generado por la clase Usuario se almacena en variables de sesión y la validación de privilegios del usuario se hace comparando el login con la lista ACL de phpgacl en el metodo before_filter, hasta aquí no hay ningún problema.
Además de eso, modifique el archivo /kumbia.php línea 243, para poder redireccionar a otro controlador en caso de que el usuario ingrese en la URL un controlador que no existe, comenté la excepción y agregué la siguiente línea:
ApplicationController :: redirect('sesion/restringir');
La redirección funciona bien, el problema comienza al invocar el método before_filter después de un error de controlador no encontrado. Describo lo que observé depurando:
1. al ingresar en la URL un controlador no existente, kumbia redirecciona a 'sesion/restringir'
2. el metodo before filter intenta leer el objeto desde el arreglo de session
$usr = Session :: get_data('usr');
3. para todas las demas redirecciones funciona de forma correcta, solo en la redireccion que agregué a la clase kumbia la variable usr carga entre los atributos del objeto algo como:
__PHP_Incomplete_Class_Name
Después de buscar en google se me ocurre que podría haber un problema de serialización por llamar el método tan 'a la brava' <!-- s
--><img src="{SMILIES_PATH}/icon_wink.gif" alt="
" title="Wink" /><!-- s
-->...
Alguna idea de como ajustarlo? Por donde empezar a revisar?
De antemano muchas gracias
Saludox
Comentarios
Lo otro seria que trataras de migrar tu código a la versión 0.5, esta versión esta muy estable y la migración es muy sencilla, serán muy pocas las lineas que modifiques...
Y por ultimo me gustaría ver como implementaste las lib phpgacl nose si este en tu disposición enviarme un código explicativo sobre el tema...
Gracias
adjunto la implementacion de phpgacl con kumbia a nivel vista y controlador... si a alguien le sirven ps adelante usenlo
el gacl no me da problemas, de hecho creo que se integra muy bien... el problema se presenta solo cualdo redirecciono despues de un error de controlador no deifinido
este es el /lib/phpgacl/main.php
y este es el metodo before filter
lo de validar el evento es para evitar que los redirects se cilcen, ya que redirecciono a sesion/restringir cuando alguien teclea mal una URL
eso de migrar a la version 0.5 me interesa, cuales son las lineas que tendría que mover?
saludox
GNU GNU GNU GNU GNU! <!-- s --><img src="{SMILIES_PATH}/icon_mrgreen.gif" alt="" title="Mr. Green" /><!-- s -->
saludox a todos
Como te dije antes esta muy stable han sido poco los Bug's reportados y yo que la utilizo a diario y no me ha dado problemas como para que se me caiga el cabello...
Si deseas esta versión lo ideal es que la bajes del SVN...
Volviendo al tema de tu implementacion del before_filter todo esta bien me puedes dar el error que te muestra en el navegador...
Mira te platico mas a fondo como funciona la seguridad en ese punto;
al intentar acceder a cierto controlador/vista, este se revisa en el ACL, si no se encuentra se envia a sesion/restringir,
la cosa es que un usuario logeado de forma correcta (digamos root) puede cometer el error de escribir mal una URL, lo logico sería enviarlo a sesion/restringir y hasta aqui todo bien...
despues de un error de URL el usuario intentará acceder a otra página, digamos (inicio/index),
el ACL revisará otra vez en el metodo before_filter si el usuario tiene o no privilegios
en esta parte se intenta leer el objeto Usuario que se almacenó en $_SESSION (todo esto usando las funciones del framework), aqui comienzan los problemas, la estructura esta corrupta y usando XDEBUG pude notar que el objeto muestra el siguiente mensaje
__PHP_Incomplete_Class_Name
el problema es que despues de esto la estructura Usuario ya no se puede utilizar y el usuario se redirecciona a sesion/autenticar, es decir, tiene que volver a loggear...
Agradezco mucho la atención que se ha tenido a mis preguntas, por acá sigo buscandole una solución óptima y cuando esté lista la publico en el foro.
saludox!
Poco elegante pero funciona, con algo mas de tiempo lo depuro a fondo y encuentro cual es el problema...
Gracias por la atención al post, me queda pendiente publicar aqui en el foro la integración kumbia-phpgacl, sigo trabajando en ello.
Saludox! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
Pienso que se puede modificar la clase Session para que reconozca estos casos y los haga directamente, seria algo muy practico.
Saludos.
muchas gracias!