From a2bae8d2242396bf0ce287f05e68cc0d7e5915bb Mon Sep 17 00:00:00 2001 From: Ricardo Dalinger Date: Wed, 19 May 2021 15:52:26 -0300 Subject: [PATCH 1/3] Agrega constante y metodo para definir si usar perfiles compilados o no, propaga chequeo a los metodos que levantan los metadatos --- .../www/aplicacion.produccion.php | 3 +++ php/nucleo/lib/toba_instancia.php | 8 ++++++++ php/nucleo/lib/toba_proyecto.php | 10 +++++----- php/nucleo/toba_nucleo.php | 19 ++++++++++++++++++- .../toba_usuarios/php/lib/admin_instancia.php | 4 +++- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/php/modelo/template_proyecto/www/aplicacion.produccion.php b/php/modelo/template_proyecto/www/aplicacion.produccion.php index fab4999bdb..7b32fa8f51 100644 --- a/php/modelo/template_proyecto/www/aplicacion.produccion.php +++ b/php/modelo/template_proyecto/www/aplicacion.produccion.php @@ -6,6 +6,9 @@ # Ejecuta con metadatos compilados define('apex_pa_metadatos_compilados', 1); +# Recupera directamente los permisos desde bd, util entornos dockerizados +#define('apex_pa_permisos_compilados', 0); + # Deshabilita el autologin define('apex_pa_validacion_debug', 0); diff --git a/php/nucleo/lib/toba_instancia.php b/php/nucleo/lib/toba_instancia.php index e2525bdb83..9c4fb90970 100644 --- a/php/nucleo/lib/toba_instancia.php +++ b/php/nucleo/lib/toba_instancia.php @@ -153,6 +153,14 @@ function get_directiva_compilacion($proyecto) return null; } + function get_directiva_compilacion_perfiles($proyecto) + { + if (isset($this->memoria[$proyecto]['perfiles_compilados'])) { + return $this->memoria[$proyecto]['perfiles_compilados']; + } + return null; + } + function get_largo_minimo_password() { if (isset($this->memoria['pwd_largo_minimo'])) { diff --git a/php/nucleo/lib/toba_proyecto.php b/php/nucleo/lib/toba_proyecto.php index b2adcc8fe2..eecdb49de8 100644 --- a/php/nucleo/lib/toba_proyecto.php +++ b/php/nucleo/lib/toba_proyecto.php @@ -397,7 +397,7 @@ function get_items_menu($proyecto=null, $grupos_acceso=null) { if (!isset($proyecto)) { $proyecto = $this->id;} if (!isset($grupos_acceso)) { $grupos_acceso = toba::manejador_sesiones()->get_perfiles_funcionales_activos();} - if ( toba::nucleo()->utilizar_metadatos_compilados( $proyecto ) ) { + if (toba::nucleo()->utilizar_metadatos_compilados($proyecto) && toba::nucleo()->usar_perfiles_compilados($proyecto)) { $rs = $this->recuperar_datos_compilados_grupo( 'toba_mc_gene__grupo_', $grupos_acceso, 'get_items_menu', @@ -430,7 +430,7 @@ function puede_grupo_acceder_item($item) //Recupero los items y los formateo en un indice consultable if(!isset($this->indice_items_accesibles)) { $this->indice_items_accesibles = array(); - if ( toba::nucleo()->utilizar_metadatos_compilados( $this->id, 'compilados' ) ) { + if (toba::nucleo()->utilizar_metadatos_compilados($this->id, 'compilados' ) && toba::nucleo()->usar_perfiles_compilados($this->id)) { ///-- Metadatos compilados if (! empty($grupos_acceso)) { //-- Busca los items accesibles por grupo @@ -462,7 +462,7 @@ function puede_grupo_acceder_item($item) function get_items_zona($zona, $grupos_acceso=null) { if (!isset($grupos_acceso)) { $grupos_acceso = toba::manejador_sesiones()->get_perfiles_funcionales_activos();} - if ( toba::nucleo()->utilizar_metadatos_compilados( $this->id ) ) { + if (toba::nucleo()->utilizar_metadatos_compilados($this->id) && toba::nucleo()->usar_perfiles_compilados($this->id)) { $rs = $this->recuperar_datos_compilados_grupo( 'toba_mc_gene__grupo_', $grupos_acceso, 'get_items_zona__'.$zona, @@ -492,7 +492,7 @@ function get_grupos_acceso_usuario_anonimo() function get_perfiles_funcionales_asociados($perfil) { - if ( toba::nucleo()->utilizar_metadatos_compilados( $this->id ) ) { + if (toba::nucleo()->utilizar_metadatos_compilados($this->id) && toba::nucleo()->usar_perfiles_compilados($this->id)) { $rs = $this->recuperar_datos_compilados_grupo( 'toba_mc_gene__grupo_', array($perfil), 'get_membresia', true); $perfiles = $rs; foreach ($rs as $perfil_miembro) { @@ -512,7 +512,7 @@ function get_perfiles_funcionales_asociados($perfil) function get_lista_permisos($grupos_acceso=null) { $grupos_acceso = isset($grupos_acceso) ? $grupos_acceso : toba::manejador_sesiones()->get_perfiles_funcionales_activos(); - if ( toba::nucleo()->utilizar_metadatos_compilados( $this->id ) ) { + if (toba::nucleo()->utilizar_metadatos_compilados($this->id) && toba::nucleo()->usar_perfiles_compilados($this->id)) { $rs = $this->recuperar_datos_compilados_grupo('toba_mc_gene__grupo_', $grupos_acceso, 'get_lista_permisos'); } else { $rs = toba_proyecto_db::get_lista_permisos($this->id, $grupos_acceso); diff --git a/php/nucleo/toba_nucleo.php b/php/nucleo/toba_nucleo.php index 1f373a57a2..728b62083e 100644 --- a/php/nucleo/toba_nucleo.php +++ b/php/nucleo/toba_nucleo.php @@ -17,6 +17,9 @@ define('apex_pa_pwd_largo_minimo', '8'); } +if (! defined('apex_pa_permisos_compilados')) { + define('apex_pa_permisos_compilados', '1'); +} /** * Clase que brinda las puertas de acceso al núcleo de toba * @package Centrales @@ -482,7 +485,9 @@ protected function iniciar_contexto_solicitud($item) require_once( self::get_directorio_compilacion() . '/gene/toba_mc_gene__basicos.php' ); $grupos_acceso = toba::manejador_sesiones()->get_perfiles_funcionales_activos(); foreach( $grupos_acceso as $grupo ) { - require_once( self::get_directorio_compilacion() . '/gene/toba_mc_gene__grupo_'.$grupo.'.php' ); + if ($this->usar_perfiles_compilados($item[0])) { + require_once( self::get_directorio_compilacion() . '/gene/toba_mc_gene__grupo_'.$grupo.'.php' ); + } } } } @@ -504,6 +509,18 @@ function utilizar_metadatos_compilados($proyecto=null) } } + function usar_perfiles_compilados($proyecto=null) + { + $proyecto = isset($proyecto) ? $proyecto : toba_proyecto::get_id(); + $flag = toba::instancia()->get_directiva_compilacion_perfiles($proyecto); + if(!isset($flag) && $proyecto == toba_proyecto::get_id()) { + //Mecanismo obsoleto + return (defined('apex_pa_perfiles_compilados') && apex_pa_perfiles_compilados); + }else{ + return $flag; + } + } + static function get_directorio_compilacion() { if(!self::$dir_compilacion) self::$dir_compilacion = toba_proyecto::get_path() . '/metadatos_compilados'; diff --git a/proyectos/toba_usuarios/php/lib/admin_instancia.php b/proyectos/toba_usuarios/php/lib/admin_instancia.php index b619e33b73..5fb3427d63 100644 --- a/proyectos/toba_usuarios/php/lib/admin_instancia.php +++ b/proyectos/toba_usuarios/php/lib/admin_instancia.php @@ -77,7 +77,9 @@ static function set_usar_perfiles_propios($id_proyecto) $instancia->set_proyecto_usar_perfiles_propios($id_proyecto, true); } //-- Re-Compilamos los metadatos de perfiles - $instancia->get_proyecto($id_proyecto)->compilar_metadatos_generales_grupos_acceso(true); + if (toba::nucleo()->usar_perfiles_compilados($id_proyecto)) { + $instancia->get_proyecto($id_proyecto)->compilar_metadatos_generales_grupos_acceso(true); + } } } From 2bfa53c4eeb44a95e37cc17f483bef0d5432e2be Mon Sep 17 00:00:00 2001 From: Ricardo Dalinger Date: Wed, 19 May 2021 19:37:40 -0300 Subject: [PATCH 2/3] Modifica msg informativo y agrega seteo para el otro archivo --- php/modelo/template_proyecto/www/aplicacion.php | 3 +++ php/modelo/template_proyecto/www/aplicacion.produccion.php | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/php/modelo/template_proyecto/www/aplicacion.php b/php/modelo/template_proyecto/www/aplicacion.php index fd42f932b0..532203c7aa 100644 --- a/php/modelo/template_proyecto/www/aplicacion.php +++ b/php/modelo/template_proyecto/www/aplicacion.php @@ -6,6 +6,9 @@ # Ejecuta con metadatos compilados de manera forzada (setear en instancia.ini, no descomentar aqui) #define('apex_pa_metadatos_compilados', 1); +# Deshabilita uso de permisos desde metadatos_compilados, util para entornos dockerizados +#define('apex_pa_permisos_compilados', 0); + # Deshabilita el autologin #define("apex_pa_validacion_debug", 0); diff --git a/php/modelo/template_proyecto/www/aplicacion.produccion.php b/php/modelo/template_proyecto/www/aplicacion.produccion.php index 7b32fa8f51..de8cffc160 100644 --- a/php/modelo/template_proyecto/www/aplicacion.produccion.php +++ b/php/modelo/template_proyecto/www/aplicacion.produccion.php @@ -6,7 +6,7 @@ # Ejecuta con metadatos compilados define('apex_pa_metadatos_compilados', 1); -# Recupera directamente los permisos desde bd, util entornos dockerizados +# Deshabilita uso de permisos desde metadatos_compilados, util para entornos dockerizados #define('apex_pa_permisos_compilados', 0); # Deshabilita el autologin From 71aedc2ac8dfb390ec9eada678edf130c2ee83ad Mon Sep 17 00:00:00 2001 From: Ricardo Dalinger Date: Mon, 24 Apr 2023 11:18:05 -0300 Subject: [PATCH 3/3] Mejora msg descriptivo y fija default en punto acceso --- php/modelo/template_proyecto/www/aplicacion.php | 4 ++-- php/modelo/template_proyecto/www/aplicacion.produccion.php | 4 ++-- php/nucleo/toba_nucleo.php | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/php/modelo/template_proyecto/www/aplicacion.php b/php/modelo/template_proyecto/www/aplicacion.php index 532203c7aa..fc995c3fe6 100644 --- a/php/modelo/template_proyecto/www/aplicacion.php +++ b/php/modelo/template_proyecto/www/aplicacion.php @@ -6,8 +6,8 @@ # Ejecuta con metadatos compilados de manera forzada (setear en instancia.ini, no descomentar aqui) #define('apex_pa_metadatos_compilados', 1); -# Deshabilita uso de permisos desde metadatos_compilados, util para entornos dockerizados -#define('apex_pa_permisos_compilados', 0); +# Habilita/deshabilita uso de permisos desde metadatos_compilados, util para entornos dockerizados (default: activo) +define('apex_pa_permisos_compilados', 1); # Deshabilita el autologin #define("apex_pa_validacion_debug", 0); diff --git a/php/modelo/template_proyecto/www/aplicacion.produccion.php b/php/modelo/template_proyecto/www/aplicacion.produccion.php index de8cffc160..340400a6df 100644 --- a/php/modelo/template_proyecto/www/aplicacion.produccion.php +++ b/php/modelo/template_proyecto/www/aplicacion.produccion.php @@ -6,8 +6,8 @@ # Ejecuta con metadatos compilados define('apex_pa_metadatos_compilados', 1); -# Deshabilita uso de permisos desde metadatos_compilados, util para entornos dockerizados -#define('apex_pa_permisos_compilados', 0); +# Habilita/deshabilita uso de permisos desde metadatos_compilados, util para entornos dockerizados (default: activo) +define('apex_pa_permisos_compilados', 1); # Deshabilita el autologin define('apex_pa_validacion_debug', 0); diff --git a/php/nucleo/toba_nucleo.php b/php/nucleo/toba_nucleo.php index 728b62083e..9a52436ced 100644 --- a/php/nucleo/toba_nucleo.php +++ b/php/nucleo/toba_nucleo.php @@ -515,7 +515,7 @@ function usar_perfiles_compilados($proyecto=null) $flag = toba::instancia()->get_directiva_compilacion_perfiles($proyecto); if(!isset($flag) && $proyecto == toba_proyecto::get_id()) { //Mecanismo obsoleto - return (defined('apex_pa_perfiles_compilados') && apex_pa_perfiles_compilados); + return (defined('apex_pa_perfiles_compilados') && apex_pa_perfiles_compilados == 1); }else{ return $flag; }