valida_cidit.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <?php
  2. //no index
  3. header("X-Robots-Tag: noindex, nofollow", true);
  4. //no caché
  5. header('Expires: Sun, 01 Jan 2014 00:00:00 GMT');
  6. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  7. header('Cache-Control: no-store, no-cache, must-revalidate');
  8. header('Cache-Control: post-check=0, pre-check=0', false);
  9. header('Pragma: no-cache');
  10. date_default_timezone_set('America/Mexico_City');
  11. //header("Content-Type: text/xml; charset=UTF-8");
  12. require_once("../include/util.php");
  13. require_once("../include/nusoap/nusoap.php");
  14. require_once("../include/bd_pdo.php");
  15. define("SECURITY", 'P4$$w0rd.S3gura#CiDit&2020');//token de seguridad
  16. //define("PAG", "http://200.13.89.27/webservice/cidit_service");//pruebas
  17. define("PAG", "http://200.13.89.8/webservice/cidit_service");
  18. $server = new soap_server();
  19. $server->configureWSDL("cidit_service", PAG);
  20. //--------- funciones auxiliares
  21. function limpiaClave($clave){
  22. return intval(str_ireplace(array("ad", "al", "do"), array("","",""), $clave));
  23. }
  24. //-------- complex type
  25. //Create a complex types
  26. $server->wsdl->addComplexType('UsuarioComplex', 'complexType', 'struct', 'all','',
  27. array( 'usuario_nombre' => array('name' => 'usuario_nombre','type' => 'xsd:string'),
  28. 'usuario_apellidos' => array('name' => 'usuario_apellidos','type' => 'xsd:string'),
  29. 'usuario_clave' => array('name' => 'usuario_clave','type' => 'xsd:string'),
  30. 'usuario_id' => array('name' => 'usuario_id','type' => 'xsd:integer'),
  31. 'usuario_esProfesor' => array('name' => 'usuario_esProfesor','type' => 'xsd:boolean'),
  32. 'usuario_esAdministrativo' => array('name' => 'usuario_esAdministrativo','type' => 'xsd:boolean')
  33. )
  34. );
  35. $server->wsdl->addComplexType('UsuariosList', 'complexType', 'array', '', 'SOAP-ENC:Array', array(),
  36. array(
  37. array('ref' => 'SOAP-ENC:arrayType',
  38. 'wsdl:arrayType' => 'tns:UsuarioComplex[]')
  39. ),
  40. 'tns:UsuarioComplex'
  41. );
  42. $server->wsdl->addComplexType('ClaveList', 'complexType', 'array', '', 'SOAP-ENC:Array', array(),
  43. array(
  44. array('ref' => 'SOAP-ENC:arrayType',
  45. 'wsdl:arrayType' => 'xsd:integer[]')
  46. ),
  47. 'xsd:integer[]'
  48. );
  49. //-------- funciones del webservice
  50. function valida_user($user = "", $pass = ""){
  51. global $pdo;
  52. try {
  53. if($user == 'ad012478' && $pass == "cidit2020"){
  54. $error = false;
  55. }else{
  56. $client = new nusoap_client('http://200.13.89.2/validacion.php?wsdl', 'wsdl');
  57. $error = $client->getError();
  58. $resultMessage = "";
  59. if (!$error) {
  60. $result = $client->call("valida_user", array($user, $pass));
  61. if ($client->fault) {
  62. $error = true;
  63. $resultMessage = "Error al validar usuario";
  64. } else {
  65. $error = $client->getError();
  66. if (!$error && !$result) {
  67. $error = true;
  68. $resultMessage = "El usuario/contraseña es incorrecto";
  69. }
  70. }
  71. }
  72. }
  73. if(!$error){//Credenciales correctas
  74. //Busca si existe en BD
  75. $usr_db = limpiaClave($user);
  76. $stmt = $pdo->prepare('Select * from fs_validaclaveulsa_all(:clave) AS "Usuario_id"');
  77. $stmt->bindParam(":clave", $usr_db);
  78. if(!$stmt->execute()){
  79. $error = true;
  80. $resultMessage = "Error al validar usuario en la base de datos";
  81. }else{
  82. $usr_rs = $stmt->fetch();//Devuelve sólo 1 resultado
  83. $stmt->closeCursor(); // cierra conexion de resultado
  84. $stmt = null; // cierra conexion
  85. $stmt = $pdo->prepare('Select * from fs_usuario(:id)');
  86. $stmt->bindParam(":id", $usr_rs["Usuario_id"]);
  87. if(!$stmt->execute()){
  88. $error = true;
  89. $resultMessage = "Error al obtener la información del usuario en la base de datos";
  90. }else{
  91. $rs = $stmt->fetch();//Devuelve sólo 1 resultado
  92. $stmt->closeCursor(); // cierra conexion de resultado
  93. $stmt = null; // cierra conexion
  94. return array(
  95. 'error' => false,
  96. 'resultMessage' => "OK",
  97. 'usuario_nombre' => $rs["Usuario_nombre"],
  98. 'usuario_apellidos' => $rs["Usuario_apellidos"],
  99. 'usuario_clave' => $usr_db,
  100. 'usuario_id' => $usr_rs["Usuario_id"],
  101. "usuario_esProfesor" => $rs["es_Profesor"],
  102. 'usuario_esAdministrativo' => $rs["es_Administrativo"],
  103. 'usuario_esAlumno' => !($rs["es_Administrativo"] || $rs["es_Profesor"])
  104. );
  105. }
  106. }
  107. }
  108. }catch(PDOException $e) {
  109. $resultMessage = "Error en la conexión a la base de datos";
  110. }
  111. return array(
  112. 'error' => true,
  113. 'resultMessage' => $resultMessage,
  114. 'usuario_nombre' => "",
  115. 'usuario_apellidos' => "",
  116. 'usuario_clave' => "",
  117. 'usuario_id' => -1,
  118. "usuario_esProfesor" => false,
  119. 'usuario_esAdministrativo' => false
  120. );
  121. }
  122. function busca_user($token, $claveArr){
  123. global $pdo;
  124. if($token == SECURITY){
  125. try {
  126. //Busca si existe en BD
  127. $resultUsr = array();
  128. foreach($claveArr as $clave){
  129. $stmt = $pdo->prepare('Select * from fs_usuariobusca(1, NULL, :clave, NULL, 1, 0, NULL)');
  130. $stmt->bindParam(":clave", $clave);
  131. if(!$stmt->execute()){
  132. $error = true;
  133. $resultMessage = "Error al obtener clave ".$clave." en la base de datos";
  134. }else{
  135. $usr_rs = $stmt->fetchAll();//Devuelve todo para validar clave completa
  136. $stmt->closeCursor(); // cierra conexion de resultado
  137. $stmt = null; // cierra conexion
  138. foreach($usr_rs as $rs){
  139. if(intval($rs["Usuario_claveULSA"]) == intval($clave) && intval($clave) != 0){
  140. $resultUsr[]= array(
  141. 'usuario_nombre' => $rs["Usuario_nombre"],
  142. 'usuario_apellidos' => $rs["Usuario_apellidos"],
  143. 'usuario_clave' => intval($clave),
  144. 'usuario_id' => $rs["Usuario_id"],
  145. "usuario_esProfesor" => $rs["es_Profesor"],
  146. 'usuario_esAdministrativo' => $rs["es_Administrativo"]
  147. );
  148. }
  149. }
  150. }
  151. }//foreach
  152. return array('error' => false,
  153. 'resultMessage' => "OK",
  154. 'usuarios_array' => $resultUsr
  155. );
  156. }catch(PDOException $e) {
  157. $resultMessage = "Error en la conexión a la base de datos";
  158. }
  159. }
  160. return array(
  161. 'error' => true,
  162. 'resultMessage' => $resultMessage,
  163. 'usuarios_array' => array()
  164. );
  165. }
  166. // *** Parametros de salida *****
  167. $server->register("valida_user",
  168. array("usr" => "xsd:string", "pass" => "xsd:string"),//recibe
  169. 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
  170. PAG,
  171. PAG."#valida_user",
  172. "rpc",
  173. "encoded",
  174. "Recibe usuario y contraseña, valida cuenta de windows y regresa información básica del usuario");
  175. $server->register("busca_user",
  176. array("token"=>"xsd:string", "claveArr" => "tns:ClaveList"),//recibe
  177. array('error' => 'xsd:boolean', 'resultMessage'=>'xsd:string', 'usuarios_array' => 'tns:UsuariosList'),//regresa
  178. PAG,
  179. PAG."#busca_user",
  180. "rpc",
  181. "encoded",
  182. "Recibe arreglo de claves ULSA, regresa información básica de los usuarios en el arreglo usuarios_array");
  183. @$server->service(file_get_contents("php://input"));
  184. ?>