} else { mensaje($MULTILANG_Error . ': ' . $MULTILANG_AuthLDAP, $MULTILANG_ErrorConnLDAP, '', 'fa fa-times fa-5x icon-red texto-blink', 'alert alert-danger alert-dismissible'); } // Si logra el acceso por LDAP consulta datos del usuario sobre Practico para llenar el XML pero // Si el usuario no existe se devolvera el valor de aceptacion solamente y el resto vacios $registro = ejecutar_sql("SELECT {$ListaCamposSinID_usuario} FROM " . $TablasCore . "usuario WHERE login=? ", "{$uid}")->fetch(); if ($DepuracionLDAP) { echo "<script language='JavaScript'> alert('{$auth_ldap_cadena}'); </script>"; } } //Verifica MOTOR autenticacion federado if (!$error_parametros && ($Auth_TipoMotor == "federado" && $uid != "admin")) { //Busca parametros de configuracion para el motor federado $Param_MotorFederado = ejecutar_sql("SELECT {$ListaCamposSinID_parametros} FROM " . $TablasCore . "parametros ")->fetch(); //Crea la nueva conexion al motor de autenticacion remoto segun los parametros encontrados $PCO_ConexionFederada = PCO_NuevaConexionBD($Param_MotorFederado["federado_motor"], $Param_MotorFederado["federado_puerto"], $Param_MotorFederado["federado_basedatos"], $Param_MotorFederado["federado_servidor"], $Param_MotorFederado["federado_usuario"], $Param_MotorFederado["federado_clave"]); //Aplica la encripcion usada por el motoro federado al campo de clave antes de compararlo frente a la BD if ($Param_MotorFederado["federado_encripcion"] == "plano") { $ClaveEnMD5 = $clave; } else { $ClaveEnMD5 = hash($Param_MotorFederado["federado_encripcion"], $clave); } //Ejecuta el Query sobre la conexion federada $registro = ejecutar_sql("SELECT " . $Param_MotorFederado["federado_campousuario"] . " as login, " . $Param_MotorFederado["federado_campousuario"] . " as nombre, 5 as nivel FROM " . $Param_MotorFederado["federado_tabla"] . " WHERE " . $Param_MotorFederado["federado_campousuario"] . "=? AND " . $Param_MotorFederado["federado_campoclave"] . "=? ", "{$uid}{$_SeparadorCampos_}{$ClaveEnMD5}", $PCO_ConexionFederada)->fetch(); if ($registro["login"] != "") { $ok_login_verifica = '1'; //Genera las credenciales en caso que no existan oauth_crear_usuario("PCOFederado", $registro["login"], $registro["login"], "", 1); } } // Inicia el XML de salida basico solamente con el estado de aceptacion
} // Evita el SQLSTATE[HY000]: General error. presentado por PostgreSQL. Se habilita solo para MySQL if ($PCOConnMotorBD == "mysql" || $PCOConnMotorBD == "sqlite") { // Establece parametros para la conexion $ConexionPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } if ($PCOConnMotorBD == "mysql") { $ConexionPDO->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); $ConexionPDO->exec("SET NAMES 'utf8';"); $ConexionPDO->exec("SET NAMES utf8;"); //Forzado UTF8 - Collation recomendada: utf8_general_ci //Evita el "General error: 2014 Cannot execute queries while other unbuffered queries are active" $ConexionPDO->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); } //$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); //$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); //$this->con->setAttribute(PDO::SQLSRV_ATTR_DIRECT_QUERY => true); //Retorna la variable de conexion creada return $ConexionPDO; } catch (PDOException $ErrorPDO) { include_once "core/comunes.php"; //Incluye la libreria de base al menos para presentar mensaje de error $mensaje_final = "Error de conexion con la base de datos. <hr>Verifique los valores existentes en el archivo <b>configuracion.php</b> y la disponibilidad de PDO y modulos asociados a su motor de bases de datos en su <b>php.ini</b>."; mensaje('<i class="fa fa-warning fa-3x text-danger texto-blink"></i> ' . $mensaje_final, "<li><b>Detalles:</b> " . $ErrorPDO->getMessage(), '', '', 'alert alert-danger alert-dismissible'); $hay_error = 1; //usada globalmente durante el proceso de instalacion } } //Genera la conexion inicial del sistema $ConexionPDO = PCO_NuevaConexionBD($MotorBD, $PuertoBD, $BaseDatos, $ServidorBD, $UsuarioBD, $PasswordBD);