index_action.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. ini_set('display_errors', 1);
  3. ini_set('display_startup_errors', 1);
  4. error_reporting(E_ALL);
  5. /*
  6. * Valida usuario con el webservice BD y devuelve contraseña para validar con PHP
  7. *
  8. * Recibe:
  9. * POST: usuario, password
  10. *
  11. * Error:
  12. * 0 - No se recibieron datos
  13. * 1 - Usuario/Contraseña incorrectos
  14. * 2 - Usuario no esta en BD
  15. * 3 - No existe usuario
  16. *
  17. * Success:
  18. * Redirecciona a index.php
  19. *
  20. * Result (del webservice): result es un arreglo con los campos:
  21. * 'error' => 'xsd:boolean',
  22. * 'resultMessage'=>'xsd:string',
  23. * 'usuario_nombre' => 'xsd:string',
  24. * 'usuario_apellidos' => 'xsd:string',
  25. * 'usuario_clave' => 'xsd:string',
  26. * 'usuario_id' => 'xsd:integer',
  27. * 'usuario_esProfesor' => 'xsd:boolean',
  28. * 'usuario_esAdministrativo' => 'xsd:boolean'
  29. */
  30. require_once('../CIDIT/classes/Usuario.php');
  31. require_once("../include/nusoap/nusoap.php");
  32. require_once("bd_pdo.php");
  33. define("SECURITY", 'P4$$w0rd.S3gura#CiDit&2020');//token de seguridad
  34. $token = SECURITY;
  35. $errorBD = false;
  36. if (is_null($pdo))
  37. $errorBD = true;
  38. if(!isset($_POST['username']) || !isset($_POST['passwd'])){
  39. echo "No se recibieron los datos";
  40. exit;
  41. }
  42. $user = trim(filter_input(INPUT_POST, 'username'));//limpia texto
  43. $pass = $_POST['passwd']; //trim(filter_input(INPUT_POST, "passwd"));//limpia texto
  44. $externo = false;
  45. if (intval(substr($user, 2)) == 0){
  46. echo "Externo<br>";
  47. $externo = true;
  48. }
  49. if (!$errorBD){
  50. if (!$externo){
  51. $client = new nusoap_client('http://200.13.89.27/webservice/valida_cidit.php?wsdl', 'wsdl');//dirección del webservice
  52. if ($client->getError()) {
  53. echo "Error de conexión al webservice<br>";
  54. exit;
  55. }else{
  56. $result = $client->call('valida_user', array($user, $pass));//función en el webservice. user necesita ad, do
  57. if (!$result){
  58. echo "Error al obtener resultado del webservice<br>";
  59. exit;
  60. } else {
  61. $userId = $result['usuario_id'];
  62. echo "Conexión realizada para ".$result["usuario_clave"]." con mensaje: ".$result['resultMessage']."<br>";
  63. }
  64. }
  65. }
  66. switch (obtenerDatos($pdo, $userId, $pass, $externo)){
  67. case 'ok':
  68. echo "Usuario::datosUsuario OK<br>";
  69. exit;
  70. break;
  71. case 'no-acceso':
  72. if ($userId > 0){
  73. if (substr($user, 0, 2) == 'al'){
  74. echo "Usuario::datosUsuario no acceso - ALUMNO<br>";
  75. } else {
  76. echo "Usuario::datosUsuario no acceso - BASICO<br>";
  77. }
  78. } else
  79. echo "Usuario::datosUsuario no acceso<br>";
  80. exit;
  81. break;
  82. case 'no-validado':
  83. echo "Usuario::datosUsuario no validado<br>";
  84. exit;
  85. break;
  86. default:
  87. echo "ObtenerDatos default";
  88. exit;
  89. break;
  90. }
  91. } else{
  92. echo "Error de conexión a la BD";
  93. exit;
  94. }
  95. function obtenerDatos($pdo, $user, $pass, $externo){
  96. echo "Obteniendo datos...<br>";
  97. $situacion = 'error';
  98. $usr = Usuario::datosUsuario($pdo, $user, $pass, $externo);
  99. if (is_null($usr))
  100. $situacion = 'no-validado';
  101. else {
  102. if (count($usr) > 0){
  103. $situacion = 'ok';
  104. } else {
  105. $situacion = 'no-acceso';
  106. }
  107. }
  108. return $situacion;
  109. }