diff --git a/php/modelo/template_proyecto/www/aplicacion.php b/php/modelo/template_proyecto/www/aplicacion.php index fd42f932b0..fc995c3fe6 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); +# 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 fab4999bdb..340400a6df 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); +# 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/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..9a52436ced 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 == 1); + }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); + } } }