Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perfiles no compilados en ambientes dockerizados #105

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions php/modelo/template_proyecto/www/aplicacion.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
3 changes: 3 additions & 0 deletions php/modelo/template_proyecto/www/aplicacion.produccion.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
8 changes: 8 additions & 0 deletions php/nucleo/lib/toba_instancia.php
Original file line number Diff line number Diff line change
Expand Up @@ -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'])) {
Expand Down
10 changes: 5 additions & 5 deletions php/nucleo/lib/toba_proyecto.php
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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) {
Expand All @@ -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);
Expand Down
19 changes: 18 additions & 1 deletion php/nucleo/toba_nucleo.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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])) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normalmente, el require si no encontraba un archivo de perfil compilado, tiraba un warning y eso se usaba para depurar que te faltaba esos metadatos compilados en la imagen Docker.

Agregar un else a este if para enviar al log un warning de que NO existe el archivo a incluir...

require_once( self::get_directorio_compilacion() . '/gene/toba_mc_gene__grupo_'.$grupo.'.php' );
}
}
}
}
Expand All @@ -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';
Expand Down
4 changes: 3 additions & 1 deletion proyectos/toba_usuarios/php/lib/admin_instancia.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}

Expand Down