Skip to content

Commit

Permalink
Merge branch 'release/v3.2.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
enfoqueNativo committed Jun 4, 2019
2 parents d8778b4 + 6aeafbc commit 6030440
Show file tree
Hide file tree
Showing 15 changed files with 100 additions and 32 deletions.
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@

[CURRENT](https://github.com/SIU-Toba/framework/compare/master...develop)

[3.2.3](https://github.com/SIU-Toba/framework/releases/tag/v3.2.3) (2019-06-04)
- Bugfix en toba_varios::array_a_latin1 y toba_varios::array_a_utf8
- Bugfix en regeneracion al eliminar los perfiles funcionales editables
- Fix en toba_rest cuando se setea la versión de la api a partir de la del proyecto
- Nueva opción `--usuario-email-admin` que permite especificar el email para la cuenta administrativa al momento de instalar el framework
- Update de libreria:
* jquery: v3.4
- Reincorpora paquete "siu/arai-json-migrator" eliminado por error
- Bugfix en toba_usuarios al generar la clave aleatoria, retornaba bytes en lugar de un string
- Agrega metodo a toba_usuario_basico para recuperar atributos del token saml
- Agrega excepcion al enviar caracteres invalidos a la generación via PHPSpreadsheet

[3.2.2](https://github.com/SIU-Toba/framework/releases/tag/v3.2.2) (2019-03-13)
- Agrega metodo a toba_usuario_basico para obtener el identificador en arai-usuario para la cuenta actualmente logueada
- Nueva opción `--excluir-bloqueads` para el comando `exportar_usuarios_arai`, evita exportar las cuentas bloqueadas
Expand Down Expand Up @@ -60,6 +72,26 @@
- Se agrega siu/manejador-salida-bootstrap como paquete sugerido
- Se traslada parte de la generación del marcado HTML al paquete siu/manejador-salida-toba

[3.1.11](https://github.com/SIU-Toba/framework/releases/tag/v3.1.11) (2018-06-03):
- Fix en toba_varios::array_a_utf8 y toba_varios::array_a_latin1, ahora usan las funciones utf8_e_seguro y utf8_d_seguro (merge develop)
- Se ajustan los nombres de paquetes al formato composer 2.0 (lowercase)

[3.1.10](https://github.com/SIU-Toba/framework/releases/tag/v3.1.10) (2018-04-30):
- Actualizacion librerias:
* onelogin/php-saml: v2.15.0
* phpoffice/phpspreadsheet: v1.6.0
* rospdf/pdf-php: v0.12.51
* vlucas/phpdotenv: v2.6.1
* phpmailer/phpmailer: v6.0.7
* guzzlehttp/psr7: v1.5.2
- Reintegra el paquete siu/arai-json-migrator quitado por error

[3.1.9](https://github.com/SIU-Toba/framework/releases/tag/v3.1.9) (2018-04-09):
- Bugfix en el metodo toba_parametros::get_proyecto() pasaba mal el id de la instancia (merge desde 3.2.0)

[3.1.8](https://github.com/SIU-Toba/framework/releases/tag/v3.1.8) (2018-03-13):
- Agrega metodo para obtener el identificador de usuario en Arai-Usuarios para la cuenta actualmente logueada (merge desde develop)

[3.1.7](https://github.com/SIU-Toba/framework/releases/tag/v3.1.7) (2019-02-13)
- Se mejora la autoconfiguración de apis rest via arai-cli (merge @develop)
- Se pospone la carga del archivo de claves de arai (merge @develop)
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.2.2
3.2.3
8 changes: 5 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
"phpmailer/phpmailer": "^6.0",
"siu-toba/text_highlighter": "~0.8",
"siu-toba/services_json": "^1.0.3.3",
"siu/rdi": "~0.9",
"siu/arai-json-migrator": "~1.0",
"siu/rdi": "~0.9",
"vlucas/phpdotenv": "~3.1",
"ioncube/php-openssl-cryptor": "dev-master",
"siu/manejador-salida-toba" : "^1.0",
Expand All @@ -58,7 +59,8 @@
"simplesamlphp/simplesamlphp": "Permite conectarse a un IDP centralizado (see onelogin)"
},
"conflict": {
"siu/arai-cli": "<2.5.0"
"siu/arai-cli": "<2.5.0",
"siu/interfaces-manejador-salida-toba" : ">=1.2.0"
},
"bin": ["bin/toba",
"bin/toba_docker"],
Expand All @@ -69,7 +71,7 @@
},
"scripts": {
"post-install-cmd": [
"yarn add [email protected] jquery@3.3 [email protected] [email protected] --modules-folder www/js/packages/",
"yarn add [email protected] jquery@3.4 [email protected] [email protected] --modules-folder www/js/packages/",
"yarn ",
"php bin/instalar_assets.php"
],
Expand Down
10 changes: 5 additions & 5 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pgdata:
image: postgres:9.4
image: postgres:9.6
command: "true"
volumes:
#Comentar la siguiente linea para corregir permisos en OSX
Expand All @@ -8,14 +8,14 @@ pgdata:
- ./docker-data/toba:/var/local/docker-data/toba

web:
image: siutoba/docker-toba
image: siutoba/docker-toba:latest
ports:
- "2020:80"
env_file: docker.env
environment:
## Descomentar y definir para cagar/instalar un proyecto especifico o instalar toba en un path dado
# TOBA_DIR: /var/local/toba
# TOBA_INSTALACION_DIR: /var/local/toba/docker-data/instalacion
TOBA_DIR: /var/local/toba
TOBA_INSTALACION_DIR: /var/local/toba/docker-data/instalacion
# TOBA_PROYECTO : miproyecto
# TOBA_BASE_NOMBRE : toba
# TOBA_PROYECTO_DIR : /var/local/toba/proyectos/miproyecto
Expand Down Expand Up @@ -43,7 +43,7 @@ web:
# - ./:/var/local/toba

pg:
image: postgres:9.4
image: postgres:9.6
ports:
- "4432:5432"
environment:
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"name": "siu-toba-framework",
"version": "3.2.2",
"version": "3.2.3",
"description": "Framework para desarrollo rápido de aplicaciones web",
"license": "SEE LICENSE IN licencia.txt",
"repository": "https://github.com/SIU-Toba/framework.git",
"author": "enfoqueNativo <[email protected]>",
"private": false,
"dependencies": {
"ckeditor": "4.11",
"jquery": "3.3",
"jquery": "3.4",
"jquery-migrate": "3.0",
"siu-js-app-launcher": "1.0"
}
Expand Down
19 changes: 17 additions & 2 deletions php/consola/comandos/comando_instalacion_silenciosa.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,11 @@ function opcion__instalar()
$pwd = $this->definir_clave_usuario_admin($param);

$usr = $this->definir_usuario_admin($param);

$email = $this->definir_email_admin($param);

//--- Vincula un usuario a todos los proyectos y se instala el proyecto
$instancia->agregar_usuario($usr, 'Usuario Administrador', $pwd);
$instancia->agregar_usuario($usr, 'Usuario Administrador', $pwd, $email);
$instancia->exportar_local();

//--- Crea los nuevos alias
Expand Down Expand Up @@ -447,6 +450,18 @@ protected function definir_usuario_admin($param)
return 'toba';
}
return $result['resultado'];
}
}

protected function definir_email_admin($param)
{
$nombre_parametro = array('--usuario-email-admin');
$result = $this->recuperar_dato_y_validez($param, $nombre_parametro);

if ($result['invalido']) {
toba::logger()->error("No se se selecciono ningun email para usuario administrador, ya que uno válido no fue provisto");
return null;
}
return $result['resultado'];
}
}
?>
4 changes: 2 additions & 2 deletions php/lib/toba_varios.php
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ function array_a_latin1($arreglo)
if (is_array($valor)) {
$salida[$clave] = array_a_latin1($valor);
} elseif (is_string($valor)) {
$salida[$clave] = utf8_decode($valor);
$salida[$clave] = utf8_d_seguro($valor);
} else {
$salida[$clave] = $valor;
}
Expand All @@ -206,7 +206,7 @@ function array_a_latin1($arreglo)

function array_a_utf8($datos){
if (is_string($datos)) {
return utf8_encode($datos);
return utf8_e_seguro($datos);
}
if (!is_array($datos)) {
return $datos;
Expand Down
3 changes: 1 addition & 2 deletions php/modelo/toba_modelo_proyecto.php
Original file line number Diff line number Diff line change
Expand Up @@ -738,7 +738,7 @@ function exportar_perfiles_produccion()
$datos[$tabla] = $contenido;
}
}

//Separar las membresias en un archivo aparte
if (!empty($datos)) {
$archivo = $dir_perfiles."/perfil_$permiso.xml";
$xml = new toba_xml_tablas();
Expand Down Expand Up @@ -2996,7 +2996,6 @@ function eliminar_permisos_editables()
$where = "proyecto = $proyecto AND restriccion_funcional IN (SELECT res.restriccion_funcional FROM apex_restriccion_funcional AS res WHERE res.proyecto = $proyecto AND res.permite_edicion = 1)";
foreach(array_reverse($this->get_lista_tablas_restricciones()) as $tabla) {
$sql = "DELETE FROM $tabla WHERE $where";
$this->db->ejecutar($sql);
$cant = $this->db->ejecutar($sql);
toba_logger::instancia()->debug("$tabla ($cant)");
$this->manejador_interface->progreso_avanzar();
Expand Down
8 changes: 3 additions & 5 deletions php/nucleo/lib/autenticacion/toba_autenticacion_saml.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,13 +103,14 @@ protected function iniciar_pedido_saml()
$this->saml_sp = new SimpleSAML_Auth_Simple($this->auth_source);
$this->saml_sp->requireAuth($param);
$this->saml_attributes = $this->saml_sp->getAttributes();
$this->set_atributos_usuario($this->saml_attributes);
toba::logger()->debug("Attributos SAML: ".print_r($this->saml_attributes, true));
}

protected function recuperar_usuario_toba()
{
$id_usuario = utf8_d_seguro($this->saml_attributes[$this->atributo_usuario][0]);
$id_usuario_arai = utf8_d_seguro($this->saml_attributes['uniqueIdentifier'][0]);
$atributos_usuario = $this->get_atributos_usuario();
$id_usuario = utf8_d_seguro($atributos_usuario[$this->atributo_usuario][0]);
$datos_usuario = false;

$subclase = $this->get_subclase_usuario_proyecto();
Expand All @@ -118,9 +119,6 @@ protected function recuperar_usuario_toba()
toba::logger()->crit("El usuario SAML '$id_usuario' no existe en la instancia toba");
throw new toba_error_autenticacion("El usuario '$id_usuario' no esta dado de alta en el sistema");
}
if (trim($id_usuario_arai) != '') {
toba::memoria()->set_dato_instancia('usuario_arai', $id_usuario_arai);
}
return $id_usuario;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,6 @@ protected function recuperar_usuario_toba()
{
$atributos_usuario = $this->get_atributos_usuario();
$id_usuario = utf8_d_seguro($atributos_usuario[$this->atributo_usuario][0]);
$id_usuario_arai = utf8_d_seguro($atributos_usuario['uniqueIdentifier'][0]);
$datos_usuario = false;

$subclase = $this->get_subclase_usuario_proyecto();
Expand All @@ -193,9 +192,6 @@ protected function recuperar_usuario_toba()
toba::logger()->crit("El usuario SAML '$id_usuario' no existe en la instancia toba");
throw new toba_error_autenticacion("El usuario '$id_usuario' no esta dado de alta en el sistema");
}
if (trim($id_usuario_arai) != '') {
toba::memoria()->set_dato_instancia('usuario_arai', $id_usuario_arai);
}
return $id_usuario;
}

Expand Down
11 changes: 10 additions & 1 deletion php/nucleo/lib/salidas/toba_vista_excel.php
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,8 @@ protected function cabecera_http($longitud)
function crear_hoja($nombre=null)
{
$hoja = $this->excel->createSheet();
if (isset($nombre)) {
if (isset($nombre)) {
$this->check_caracteres($nombre);
$hoja->setTitle(utf8_encode(strval($nombre)));
}
$this->excel->setActiveSheetIndex($this->excel->getSheetCount()-1);
Expand All @@ -135,6 +136,7 @@ function set_hoja_nombre($nombre)
{
if (strlen($nombre) > 31) {
$nombre = substr($nombre, 0, 30);
$this->check_caracteres($nombre);
}
$this->excel->getActiveSheet()->setTitle(utf8_encode(strval($nombre)));
}
Expand Down Expand Up @@ -353,5 +355,12 @@ function texto($texto, $estilos=array(), $celdas_ancho=1, $altura=null, $origen=
}
}

private function check_caracteres($texto)
{
$ic = Worksheet::getInvalidCharacters();
if (str_replace($ic, '', $texto) !== $texto) {
throw new toba_error('El texto tiene caracteres inválidos para Excel');
}
}
}
?>
8 changes: 8 additions & 0 deletions php/nucleo/lib/toba_autenticacion.php
Original file line number Diff line number Diff line change
Expand Up @@ -125,5 +125,13 @@ function get_lista_cuentas_posibles()
}
return array();
}

function get_id_usuario_arai()
{
$atributos = $this->get_atributos_usuario();
if (isset($atributos['uniqueIdentifier']) && ! empty($atributos['uniqueIdentifier'])) {
return utf8_d_seguro($atributos['uniqueIdentifier'][0]);
}
}
}
?>
6 changes: 3 additions & 3 deletions php/nucleo/lib/toba_rest.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ public function instanciar_libreria_rest($api='')
'encoding' => 'latin1'
);
$datos_ini_proyecto = $this->get_ini_proyecto();
if (!empty($datos_ini_proyecto) && isset($datos_ini_proyecto['version'])) {
$settings['api_version'] = $datos_ini_proyecto['version'];
if (!empty($datos_ini_proyecto) && isset($datos_ini_proyecto['proyecto']['version'])) {
$settings['api_version'] = $datos_ini_proyecto['proyecto']['version'];
}
$settings = array_merge($settings, $ini->get('settings', null, array(), false));

Expand Down Expand Up @@ -213,7 +213,7 @@ protected function get_modelo_proyecto()
protected function get_ini_proyecto()
{
$resultado = array();
if (toba::config()->existe_valor('proyecto', null, 'id')) {
if (toba::config()->existe_valor('proyecto', 'proyecto', 'id')) {
$resultado = toba::config()->get_seccion('proyecto');
}
return $resultado;
Expand Down
2 changes: 1 addition & 1 deletion php/nucleo/lib/toba_usuario.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ static function generar_clave_aleatoria($long)
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
try {
$cad = random_bytes($long); //PHP7.0
return $cad;
return bin2hex($cad);
} catch (Exception $e) {
//Captura excepcion y sigue adelante con el viejo metodo
}
Expand Down
11 changes: 10 additions & 1 deletion php/nucleo/lib/toba_usuario_basico.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ function get_id()
*/
function get_id_en_arai()
{
$usuario_arai = toba::memoria()->get_dato_instancia('usuario_arai');
$usuario_arai = toba::manejador_sesiones()->get_autenticacion()->get_id_usuario_arai();
if (! is_null($usuario_arai)) {
return $usuario_arai;
}
Expand All @@ -94,6 +94,15 @@ function get_nombre()
return $this->datos_basicos['nombre'];
}

/**
* Retorna la informacion de atributos del token saml directamente
* @return array
*/
function get_informacion_atributos()
{
return toba::manejador_sesiones()->get_autenticacion()->get_atributos_usuario();
}

//-------------------------------------------------------
//----- Perfil
//-------------------------------------------------------
Expand Down

0 comments on commit 6030440

Please sign in to comment.