コード例 #1
0
 /**
  *	Controla el cierre de la sesion.
  */
 private function control_finalizacion_sesion()
 {
     //El usuario solicito cerrar la sesion
     if (isset($_GET[apex_sesion_qs_finalizar]) && $_GET[apex_sesion_qs_finalizar] == 1) {
         throw new toba_error_usuario('Finalizada por el usuario');
     }
     // Controlo el tiempo de no interaccion
     $proyecto = toba::proyecto()->get_id();
     $ventana = toba_parametros::get_session_no_interaccion($proyecto);
     if ($ventana != 0) {
         // 0 implica desactivacion
         $ultimo_acceso = $_SESSION[TOBA_DIR]['instancias'][$this->instancia]['proyectos'][$this->proyecto]['info_sesion']['ultimo_acceso'];
         $tiempo_desconectado = (time() - $ultimo_acceso) / 60;
         //Tiempo desde el ultimo REQUEST
         if ($tiempo_desconectado >= $ventana) {
             toba::notificacion("Usted ha permanecido mas de {$ventana} minutos sin interactuar \n\t\t\t\t\t\t\tcon el servidor. Por razones de seguridad su sesion ha sido eliminada. \n\t\t\t\t\t\t\tPor favor vuelva a registrarse si desea continuar utilizando el sistema.\n\t\t\t\t\t\t\tDisculpe las molestias ocasionadas.");
             throw new toba_error_autorizacion("Se exedio la ventana temporal ({$ventana} m.)");
         }
     }
     // Controlo el tiempo maximo de sesion
     $maximo = toba_parametros::get_session_tiempo_maximo($proyecto);
     if ($maximo != 0) {
         // 0 implica desactivacion
         $inicio_sesion = $_SESSION[TOBA_DIR]['instancias'][$this->instancia]['proyectos'][$this->proyecto]['info_sesion']['inicio'];
         $tiempo_total = (time() - $inicio_sesion) / 60;
         //Tiempo desde que se inicio la sesion
         if ($tiempo_total >= $maximo) {
             toba::notificacion("Se ha superado el tiempo de sesion permitido ({$maximo} minutos)\n\t\t\t\t\t\t\tPor favor vuelva a registrarse si desea continuar utilizando el sistema.\n\t\t\t\t\t\t\tDisculpe las molestias ocasionadas.");
             throw new toba_error_autorizacion("Se exedio el tiempo maximo de sesion ({$maximo} m.)");
         }
     }
     //--Controla que la autenticacion siga presente (caso CAS y SAML), no se hace para proyectos sin login
     if (toba::proyecto()->get_parametro('requiere_validacion')) {
         $this->get_autenticacion()->verificar_logout();
     }
 }