/** * 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(); } }