123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- //no index
- header("X-Robots-Tag: noindex, nofollow", true);
- //no caché
- header('Expires: Sun, 01 Jan 2014 00:00:00 GMT');
- header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
- header('Cache-Control: no-store, no-cache, must-revalidate');
- header('Cache-Control: post-check=0, pre-check=0', false);
- header('Pragma: no-cache');
- date_default_timezone_set('America/Mexico_City');
- //header("Content-Type: text/xml; charset=UTF-8");
- require_once("../include/util.php");
- require_once("../include/nusoap/nusoap.php");
- require_once("../include/bd_pdo.php");
- define("SECURITY", 'P4$$w0rd.S3gura#CiDit&2020');//token de seguridad
- //define("PAG", "http://200.13.89.27/webservice/cidit_service");//pruebas
- define("PAG", "http://200.13.89.8/webservice/cidit_service");
- $server = new soap_server();
- $server->configureWSDL("cidit_service", PAG);
- //--------- funciones auxiliares
- function limpiaClave($clave){
- return intval(str_ireplace(array("ad", "al", "do"), array("","",""), $clave));
- }
- //-------- complex type
- //Create a complex types
- $server->wsdl->addComplexType('UsuarioComplex', 'complexType', 'struct', 'all','',
- array( 'usuario_nombre' => array('name' => 'usuario_nombre','type' => 'xsd:string'),
- 'usuario_apellidos' => array('name' => 'usuario_apellidos','type' => 'xsd:string'),
- 'usuario_clave' => array('name' => 'usuario_clave','type' => 'xsd:string'),
- 'usuario_id' => array('name' => 'usuario_id','type' => 'xsd:integer'),
- 'usuario_esProfesor' => array('name' => 'usuario_esProfesor','type' => 'xsd:boolean'),
- 'usuario_esAdministrativo' => array('name' => 'usuario_esAdministrativo','type' => 'xsd:boolean')
- )
- );
- $server->wsdl->addComplexType('UsuariosList', 'complexType', 'array', '', 'SOAP-ENC:Array', array(),
- array(
- array('ref' => 'SOAP-ENC:arrayType',
- 'wsdl:arrayType' => 'tns:UsuarioComplex[]')
- ),
- 'tns:UsuarioComplex'
- );
- $server->wsdl->addComplexType('ClaveList', 'complexType', 'array', '', 'SOAP-ENC:Array', array(),
- array(
- array('ref' => 'SOAP-ENC:arrayType',
- 'wsdl:arrayType' => 'xsd:integer[]')
- ),
- 'xsd:integer[]'
- );
- //-------- funciones del webservice
- function valida_user($user = "", $pass = ""){
- global $pdo;
- try {
-
- if($user == 'ad012478' && $pass == "cidit2020"){
- $error = false;
- }else{
-
- $client = new nusoap_client('http://200.13.89.2/validacion.php?wsdl', 'wsdl');
- $error = $client->getError();
- $resultMessage = "";
- if (!$error) {
- $result = $client->call("valida_user", array($user, $pass));
- if ($client->fault) {
- $error = true;
- $resultMessage = "Error al validar usuario";
- } else {
- $error = $client->getError();
- if (!$error && !$result) {
- $error = true;
- $resultMessage = "El usuario/contraseña es incorrecto";
- }
- }
- }
- }
-
- if(!$error){//Credenciales correctas
- //Busca si existe en BD
- $usr_db = limpiaClave($user);
-
- $stmt = $pdo->prepare('Select * from fs_validaclaveulsa_all(:clave) AS "Usuario_id"');
- $stmt->bindParam(":clave", $usr_db);
- if(!$stmt->execute()){
- $error = true;
- $resultMessage = "Error al validar usuario en la base de datos";
- }else{
- $usr_rs = $stmt->fetch();//Devuelve sólo 1 resultado
- $stmt->closeCursor(); // cierra conexion de resultado
- $stmt = null; // cierra conexion
-
- $stmt = $pdo->prepare('Select * from fs_usuario(:id)');
- $stmt->bindParam(":id", $usr_rs["Usuario_id"]);
- if(!$stmt->execute()){
- $error = true;
- $resultMessage = "Error al obtener la información del usuario en la base de datos";
- }else{
- $rs = $stmt->fetch();//Devuelve sólo 1 resultado
- $stmt->closeCursor(); // cierra conexion de resultado
- $stmt = null; // cierra conexion
- return array(
- 'error' => false,
- 'resultMessage' => "OK",
- 'usuario_nombre' => $rs["Usuario_nombre"],
- 'usuario_apellidos' => $rs["Usuario_apellidos"],
- 'usuario_clave' => $usr_db,
- 'usuario_id' => $usr_rs["Usuario_id"],
- "usuario_esProfesor" => $rs["es_Profesor"],
- 'usuario_esAdministrativo' => $rs["es_Administrativo"],
- 'usuario_esAlumno' => !($rs["es_Administrativo"] || $rs["es_Profesor"])
- );
- }
- }
-
- }
-
- }catch(PDOException $e) {
- $resultMessage = "Error en la conexión a la base de datos";
- }
-
- return array(
- 'error' => true,
- 'resultMessage' => $resultMessage,
- 'usuario_nombre' => "",
- 'usuario_apellidos' => "",
- 'usuario_clave' => "",
- 'usuario_id' => -1,
- "usuario_esProfesor" => false,
- 'usuario_esAdministrativo' => false
- );
- }
- function busca_user($token, $claveArr){
- global $pdo;
- if($token == SECURITY){
- try {
- //Busca si existe en BD
- $resultUsr = array();
- foreach($claveArr as $clave){
- $stmt = $pdo->prepare('Select * from fs_usuariobusca(1, NULL, :clave, NULL, 1, 0, NULL)');
- $stmt->bindParam(":clave", $clave);
- if(!$stmt->execute()){
- $error = true;
- $resultMessage = "Error al obtener clave ".$clave." en la base de datos";
- }else{
- $usr_rs = $stmt->fetchAll();//Devuelve todo para validar clave completa
- $stmt->closeCursor(); // cierra conexion de resultado
- $stmt = null; // cierra conexion
- foreach($usr_rs as $rs){
- if(intval($rs["Usuario_claveULSA"]) == intval($clave) && intval($clave) != 0){
- $resultUsr[]= array(
- 'usuario_nombre' => $rs["Usuario_nombre"],
- 'usuario_apellidos' => $rs["Usuario_apellidos"],
- 'usuario_clave' => intval($clave),
- 'usuario_id' => $rs["Usuario_id"],
- "usuario_esProfesor" => $rs["es_Profesor"],
- 'usuario_esAdministrativo' => $rs["es_Administrativo"]
- );
- }
- }
- }
- }//foreach
- return array('error' => false,
- 'resultMessage' => "OK",
- 'usuarios_array' => $resultUsr
- );
- }catch(PDOException $e) {
- $resultMessage = "Error en la conexión a la base de datos";
- }
- }
- return array(
- 'error' => true,
- 'resultMessage' => $resultMessage,
- 'usuarios_array' => array()
- );
- }
- // *** Parametros de salida *****
- $server->register("valida_user",
- array("usr" => "xsd:string", "pass" => "xsd:string"),//recibe
- array('error' => 'xsd:boolean', 'resultMessage'=>'xsd:string', 'usuario_nombre' => 'xsd:string', 'usuario_apellidos' => 'xsd:string', 'usuario_clave' => 'xsd:string', 'usuario_id' => 'xsd:integer', 'usuario_esProfesor' => 'xsd:boolean', 'usuario_esAdministrativo' => 'xsd:boolean' ),//regresa
- PAG,
- PAG."#valida_user",
- "rpc",
- "encoded",
- "Recibe usuario y contraseña, valida cuenta de windows y regresa información básica del usuario");
-
- $server->register("busca_user",
- array("token"=>"xsd:string", "claveArr" => "tns:ClaveList"),//recibe
- array('error' => 'xsd:boolean', 'resultMessage'=>'xsd:string', 'usuarios_array' => 'tns:UsuariosList'),//regresa
- PAG,
- PAG."#busca_user",
- "rpc",
- "encoded",
- "Recibe arreglo de claves ULSA, regresa información básica de los usuarios en el arreglo usuarios_array");
- @$server->service(file_get_contents("php://input"));
- ?>
|