Error: siempre se abre la misma operación

Estimados!

Tengo un problema de lo más raro. Es en un nuevo proyecto con login sin autorización, que tiene varias operaciones públicas.

El error que sucede es que al hacer clic en los botones del menú horizontal para ir a una operación pública, siembre termina por cargar la misma operación; es decir, no cambia de página.

En este log puede observarse que aunque la operación solicitada cambia, siembre carga la operación “Cómo funciona”

[size=8pt]-o-o-o-o-o-
Fecha: 16-03-2013 20:11:53
Operacion: Cómo funciona
Usuario: no_autentificado
Version-PHP: 5.3.8
Servidor: localhost
URI: /inscribime/1.0/aplicacion.php?tm=1&ai=inscribime||3466
Referrer: http://localhost/inscribime/1.0/aplicacion.php?tm=1&ai=inscribime||2
Host: ::1

[INFO][toba] Se detecto acceso desde el menu. Se limpia la memoria de la operacion
[DEBUG][toba] Se cambia el ítem solicitado a =>array (
0 => ‘inscribime’,
1 => ‘2’,
)
[INFO][toba] Se detecto acceso desde el menu. Se limpia la memoria de la operacion
[DEBUG][inscribime] PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje proyecto
[DEBUG][toba] [SECCION] Iniciando componentes…
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio…
[DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html…

-o-o-o-o-o-
Fecha: 16-03-2013 20:11:53
Operacion: Cómo funciona
Usuario: no_autentificado
Version-PHP: 5.3.8
Servidor: localhost
URI: /inscribime/1.0/aplicacion.php?tm=1&ai=inscribime||3468
Referrer: http://localhost/inscribime/1.0/aplicacion.php?tm=1&ai=inscribime||3466
Host: ::1

[INFO][toba] Se detecto acceso desde el menu. Se limpia la memoria de la operacion
[DEBUG][toba] Se cambia el ítem solicitado a =>array (
0 => ‘inscribime’,
1 => ‘2’,
)
[INFO][toba] Se detecto acceso desde el menu. Se limpia la memoria de la operacion
[DEBUG][inscribime] PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje proyecto
[DEBUG][toba] [SECCION] Iniciando componentes…
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio…
[DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html…

-o-o-o-o-o-
Fecha: 16-03-2013 20:11:54
Operacion: Cómo funciona
Usuario: no_autentificado
Version-PHP: 5.3.8
Servidor: localhost
URI: /inscribime/1.0/aplicacion.php?tm=1&ai=inscribime||3464
Referrer: http://localhost/inscribime/1.0/aplicacion.php?tm=1&ai=inscribime||3468
Host: ::1

[INFO][toba] Se detecto acceso desde el menu. Se limpia la memoria de la operacion
[DEBUG][toba] Se cambia el ítem solicitado a =>array (
0 => ‘inscribime’,
1 => ‘2’,
)
[INFO][toba] Se detecto acceso desde el menu. Se limpia la memoria de la operacion
[DEBUG][inscribime] PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje proyecto
[DEBUG][toba] [SECCION] Iniciando componentes…
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio…
[DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html…[/size]

Espero puedan darme un indicio del problema, gracias!!!

IMPORTANTE:

Para solucionarlo (con alambre, jaja), la idea fue cargar bien la operación en el arreglo item, ya que al parecer no la carga bien cuando son públicas.

  1. Modifiqué la función cargar_solicitud_web del archivo toba_nucleo.php.

    function cargar_solicitud_web()
    {
     ...
                    if(!$item[0] || !$item[1]) {
                            throw new toba_error_def('ERROR: No esta definido el ITEM de LOGIN');        
                    }                        
    
                    //AGREGADO
                    if (!empty($_REQUEST['ai'])){
                            $pos = strpos($_REQUEST['ai'], '||')+2;
                            $item[1] = substr($_REQUEST['ai'],$pos);
                    }
                    //FIN AGREGADO
    
                    $this->iniciar_contexto_solicitud($item);
                    $solicitud = toba_constructor::get_runtime(array('proyecto'=>$item[0],'componente'=>$item[1]), 'toba_item');
     ...              
    }
    
  2. Modifiqué la función comprobar_acceso_anonimo del archivo toba_manejador_sesiones.php.

    private function comprobar_acceso_anonimo()
    {
            // Si el proyecto no requiere autentificacion disparo una sesion anonima
            if ( ! toba::proyecto()->get_parametro('requiere_validacion') ) {
                    //Si la sesion esta extendida, aunque sea anonima necesita inicializacion.
                    if ( $this->sesion_posse_item_inicializacion() ) {
                            //Apunto al nucleo al item de inicializacion de sesion
                            $item[0] = toba::proyecto()->get_id();
                            $item[1] = toba::proyecto()->get_parametro('item_set_sesion');
                            
                            //AGREGADO
                            if (!empty($_REQUEST['ai'])){
                                    $pos = strpos($_REQUEST['ai'], '||')+2;
                                    $item[1] = substr($_REQUEST['ai'],$pos);
                            }
                            //FIN AGREGADO
    
                            toba::memoria()->set_item_solicitado($item);
                    } else {
                            $this->login_anonimo();
                    }
            }
    }
    

Hola Diego,

si el proyecto no requiere autorizacion para loguearse… para que tiene operaciones publicas?, todas las operaciones son accesibles sin loguearse.
La idea de las operaciones publicas, es que solo esas sean accesibles por fuera del login, en tu caso no agregan nada.

El error que sucede es que al hacer clic en los botones del menú horizontal para ir a una operación pública, siembre termina por cargar la misma operación; es decir, no cambia de página.

En este log puede observarse que aunque la operación solicitada cambia, siembre carga la operación “Cómo funciona”

En que version de Toba te esta pasando esto?, contame un poco mas, no deberias estar teniendo inconvenientes para poder acceder a otras operaciones.

Saludos

Tiene operaciones públicas, porque sino no aparecen los accesos en la botonera superior.

La versión es la 2.3.4

Fijate por favor, la solución que logré modificando los archivos toba_nucleo.php y toba_manejador_sesiones.php.

Hola Diego,

hay algo que no me termina de cerrar, osea… no es necesario que la operacion este publica para que aparezca en el menu, si es que el sistema no tiene autenticacion.
Creo que lo que te puede estar pasando, es que cuando configuraste que no se use autenticacion, el perfil de acceso que le diste al usuario anonimo, no incluye todas esas operaciones.
Fijate en el editor que grupo de acceso le diste y que operaciones tiene configurado el mismo. Te adjunto una img.

Saludos


Editor Toba.png

Editor Toba.png

Richard,

El ID Usuario anónimo de mi proyecto se llama “anonimo” (muy original lo mío!)

Yo pensé que si ponía el perfil “anonimo” como un Perfil con permiso de acceso a una operación, esta se vería en la botonera, por más que no estuviera logueado el usuario, pero no fue así! Es por eso que tuve que ponerlas como públicas para que si aparezcan en la botonera.

Igual creo que ese no es el problema de fondo, porque poniéndola como pública si funciona. El problema real está en no se carga la operación solicitada desde la botonera. ¿Pudiste ver mi solución al respecto? (o, atada con alambre! jaja).

Saludos.

Hola Diego,

Podrias adjuntarme un par de imagenes con la definicion del perfil funcional que le asignaste al usuario anonimo?.
Necesitaria las solapas de Operaciones Accesibles y Restricciones Funcionales.

Igual creo que ese no es el problema de fondo, porque poniéndola como pública si funciona. El problema real está en no se carga la operación solicitada desde la botonera. ¿Pudiste ver mi solución al respecto? (o, atada con alambre! jaja).

Es el problema de fondo, porque no tenes ninguna necesidad de poner una operacion como publica si el sistema no tiene login.

Lo que me resulta raro de tu caso es que la operacion sea publica, aparezca en el menu y no sea accesible, he probado con distintos sistemas y no encontre forma de poder reproducirlo, no hay algun control manual que te redirija a la pagina inicial en algun caso X?.

Si la operacion esta en el menu, tiene que ser accesible, mas aun si es publica, si exigis que el sistema tenga autenticacion funciona correctamente?

En cuanto a tu solucion, voy a decirlo de forma polite… no hagas eso! :smiley:

Saludos