index_action.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /*
  3. * Valida usuario con la BD y devuelve contraseña para validar con PHP
  4. *
  5. * Recibe:
  6. * POST: usuario, password
  7. *
  8. * Error:
  9. * 0 - No se recibieron datos
  10. * 1 - Usuario/Contraseña incorrectos
  11. * 2 - Usuario no esta en BD
  12. * 3 - No existe usuario
  13. *
  14. * Success:
  15. * Redirecciona a inicio.php
  16. */
  17. include_once("../../include/nocache.php");//continue on error
  18. require_once("../../include/bd_pdo.php");//die on error
  19. require_once("../../include/util.php");
  20. require_once("../../include/nusoap/nusoap.php");
  21. session_start();
  22. $_SESSION = array();
  23. function limpiaClave($clave){
  24. return intval(str_ireplace(array("ad", "al", "do"), array("","",""), $clave));
  25. }
  26. //Valida usuario, regresa falso con error, 1 si es aceptado, 0 si es rechazado
  27. function validaUsuario($user, $pass){
  28. $client = new nusoap_client('http://200.13.89.2/validacion.php?wsdl', 'wsdl');
  29. $error = $client->getError();
  30. if ($error) {
  31. return false;
  32. }
  33. $result = $client->call("valida_user_addo", array($user, $pass));
  34. if ($client->fault) {
  35. return false;
  36. } else {
  37. $error = $client->getError();
  38. if ($error) {
  39. return false;
  40. } else {
  41. if($result) return 1;
  42. else return 0;
  43. }
  44. }
  45. }
  46. if(!isset($_POST["username"]) || !isset($_POST["passwd"])){
  47. header("Location: ../index.php?error=0");
  48. //echo "No hay POST";
  49. exit;
  50. }
  51. $usr = trim(filter_input(INPUT_POST, "username"));//limpia texto
  52. $usr_db = limpiaClave($usr);
  53. $pass = $_POST["passwd"]; //trim(filter_input(INPUT_POST, "passwd"));//limpia texto
  54. //Revisar si está en los externos
  55. $stmt = $pdo->prepare('Select * from fs_navidadusuarioexterno_valida(:usr)');
  56. $stmt->bindParam(":usr", $usr);//sin ad, do
  57. if(!$stmt->execute()){
  58. echo "Externo fs_navidadusuarioexterno_valida<br>";
  59. print_r($stmt->errorInfo());
  60. //header("Location: ../index.php?error=2");
  61. exit();
  62. }
  63. $externo_rs = $stmt->fetch();
  64. $stmt->closeCursor(); // cierra conexion de resultado
  65. $usr_id = NULL;
  66. $usr_ext_id = NULL;
  67. if($externo_rs["NavidadUsuarioExterno_existe"] && password_verify($pass, $externo_rs["NavidadUsuarioExterno_pass"])){//Está en externos
  68. if(!$externo_rs["NavidadUsuarioExterno_activo"]){
  69. echo "Externo inactivo<br>";
  70. //header("Location: ../index.php?error=2");
  71. exit();
  72. }
  73. $usr_ext_id = $externo_rs["NavidadUsuarioExterno_id"];
  74. unset($externo_rs);
  75. }else{//no existe en externos, buscar en SGU
  76. $stmt = $pdo->prepare('Select * from fs_validaclaveulsa(:usr) AS "Usuario_id"');
  77. $stmt->bindParam(":usr", $usr_db);
  78. if(!$stmt->execute()){
  79. echo "Interno fs_validaclaveulsa<br>";
  80. print_r($stmt->errorInfo());
  81. //header("Location: ../index.php?error=2");
  82. exit();
  83. }
  84. $usr_rs = $stmt->fetch();//Devuelve sólo 1 resultado
  85. $stmt->closeCursor(); // cierra conexion de resultado
  86. $stmt = null; // cierra conexion
  87. if($usr_rs["Usuario_id"] != ""){//Si existe el usuario
  88. $valido = validaUsuario($usr, $pass);//false = error, 0 = sin permiso, 1 = con permiso
  89. if($valido === false){
  90. header("Location: ../index.php?error=1&sgu=false");
  91. exit();
  92. }else if($valido != 1){
  93. header("Location: ../index.php?error=1");
  94. exit();
  95. }
  96. $usr_id = $usr_rs["Usuario_id"];
  97. }else{//no existe interno
  98. echo "Interno no existe<br>";
  99. //header("Location: ../index.php?error=2");
  100. exit();
  101. }
  102. unset($usr_rs);
  103. }
  104. //obtiene navidad
  105. $stmt = $pdo->prepare('Select * from fs_navidad()');
  106. if(!$stmt->execute()){
  107. header("Location: ../index.php?error=5");
  108. exit();
  109. }
  110. $navidad_rs = $stmt->fetch();
  111. $stmt->closeCursor();
  112. if(count($navidad_rs) == 0 || !isset($navidad_rs["Navidad_id"]) || is_null($navidad_rs["Navidad_id"])){
  113. header("Location: ../index.php?error=5");
  114. exit();
  115. }
  116. //Si es externo $usr_ext_id tiene un valor, si es interno $usr_id tiene valor
  117. if($usr_ext_id != NULL){
  118. $stmt = $pdo->prepare('Select * from fi_navidadusuario(:nav, :id, true)');
  119. $stmt->bindParam(":id", $usr_ext_id);
  120. //echo "Select * from fi_navidadusuario( ".$navidad_rs["Navidad_id"].", ".$usr_ext_id.", true)";
  121. }else{
  122. $stmt = $pdo->prepare('Select * from fi_navidadusuario(:nav, :id, false)');
  123. $stmt->bindParam(":id", $usr_id);
  124. //echo "Select * from fi_navidadusuario( ".$navidad_rs["Navidad_id"].", ".$usr_id.", false)";
  125. }
  126. $stmt->bindParam(":nav", $navidad_rs["Navidad_id"]);
  127. if(!$stmt->execute()){
  128. //print_r($stmt->errorInfo());
  129. header("Location: ../index.php?error=4");
  130. exit();
  131. }
  132. $stmt->closeCursor();
  133. //Obtiene datos
  134. if($usr_ext_id != NULL){
  135. $stmt = $pdo->prepare('Select * from fs_navidadusuario_login(:nav, :id, true)');
  136. $stmt->bindParam(":id", $usr_ext_id);
  137. //echo "Select * from fi_navidadusuario( ".$navidad_rs["Navidad_id"].", ".$usr_ext_id.", true)";
  138. }else{
  139. $stmt = $pdo->prepare('Select * from fs_navidadusuario_login(:nav, :id, false)');
  140. $stmt->bindParam(":id", $usr_id);
  141. //echo "Select * from fi_navidadusuario( ".$navidad_rs["Navidad_id"].", ".$usr_id.", false)";
  142. }
  143. $stmt->bindParam(":nav", $navidad_rs["Navidad_id"]);
  144. if(!$stmt->execute()){
  145. //print_r($stmt->errorInfo());
  146. header("Location: ../index.php?error=4");
  147. exit();
  148. }
  149. $rs = $stmt->fetch();
  150. $stmt->closeCursor();
  151. $_SESSION["n_timeout"] = time();
  152. $_SESSION["n_usuario_id"] = $rs["NavidadUsuario_id"];
  153. $_SESSION["n_usuario_nombre"] = $rs["Usuario_nombre"];
  154. $_SESSION["n_usuario_apellidos"] = $rs["Usuario_apellidos"];
  155. $_SESSION["n_sgi_administrador"] = $rs["SGI_administrador"];
  156. $_SESSION["n_navidad"] = $navidad_rs["Navidad_id"];
  157. $_SESSION["n_navidad_activa"] = $navidad_rs["Navidad_activa"];
  158. header("Location: ../main.php");//todo OK manda a sistema
  159. exit();
  160. $pdo = null;
  161. ?>