inicia_action.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. /*
  3. * Valida usuario con el webservice 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 index.php
  16. *
  17. * Result (del webservice): result es un arreglo con los campos:
  18. * 'error' => 'xsd:boolean',
  19. * 'resultMessage'=>'xsd:string',
  20. * 'usuario_nombre' => 'xsd:string',
  21. * 'usuario_apellidos' => 'xsd:string',
  22. * 'usuario_clave' => 'xsd:string',
  23. * 'usuario_id' => 'xsd:integer',
  24. * 'usuario_esProfesor' => 'xsd:boolean',
  25. * 'usuario_esAdministrativo' => 'xsd:boolean'
  26. */
  27. session_start();
  28. //require_once("../classes/Log.php");
  29. require_once("../include/nusoap/nusoap.php");
  30. require_once('../classes/Concurso.php');
  31. require_once('../classes/Usuario.php');
  32. require_once('../classes/ValidaSesion.php');
  33. require_once("../include/bd_pdo.php");
  34. define("SECURITY", 'P4$$w0rd.S3gura#CiDit&2020');//token de seguridad
  35. $token = SECURITY;
  36. $pag = explode('?', $_SERVER["HTTP_REFERER"]);
  37. $pag = explode('/', $pag[0]);
  38. $pag = $pag[count($pag)-1];
  39. $errorBD = false;
  40. if (is_null($pdo))
  41. $errorBD = true;
  42. if(!isset($_POST['username']) || !isset($_POST['passwd'])){
  43. header('Location: ../' . $pag . '?errorIni=0');
  44. exit;
  45. }
  46. $user = trim(filter_input(INPUT_POST, 'username'));//limpia texto
  47. $pass = $_POST['passwd']; //trim(filter_input(INPUT_POST, "passwd"));//limpia texto
  48. $externo = false;
  49. if (intval(substr($user, 2)) == 0)
  50. $externo = true;
  51. if (!$errorBD){
  52. $_SESSION['EI_timeout'] = time();
  53. if (!$externo){
  54. $client = new nusoap_client('http://200.13.89.48/webservice/valida_cidit.php?wsdl', 'wsdl');//dirección del webservice
  55. if ($client->getError()) {
  56. header('Location: ../' . $pag . '?errorIni=1');
  57. exit;
  58. }else{
  59. $result = $client->call('valida_user', array($user, $pass));//función en el webservice. user necesita ad, do
  60. if (!$result){
  61. header('Location: ../' . $pag . '?errorIni=1');
  62. exit;
  63. } else {
  64. if ($result['usuario_clave'] != '12999')
  65. $userId = $result['usuario_id'];
  66. else
  67. if (isset ($_POST['idusr']))
  68. $userId = intval($_POST['idusr']);
  69. else
  70. $userId = $result['usuario_id'];
  71. }
  72. }
  73. }
  74. else {
  75. $userId = $user;
  76. }
  77. if (obtenerDatos($pdo, $userId, $pass, $externo)){
  78. $accesos = new ValidaSesion($pdo, 341);
  79. if ($accesos->tieneAcceso()){
  80. if (!isset($_POST['registro']))
  81. header('Location: ../home.php');
  82. else
  83. header('Location: ../registro.php');
  84. }
  85. else
  86. header('Location: ../salir.php');
  87. exit;
  88. } else
  89. header('Location: ../' . $pag . '?errorIni=3');
  90. } else{
  91. header('Location: ../' . $pag . '?errorIni=1');
  92. exit;
  93. }
  94. function obtenerDatos($pdo, $user, $pass, $externo){
  95. if(!isset($_SESSION['EI_actual'])){
  96. $actual = new Concurso();
  97. $actual->getConcursoActivo($pdo);
  98. $_SESSION['EI_actual'] = serialize($actual);
  99. }
  100. $actual = unserialize($_SESSION['EI_actual']);
  101. $usr = Usuario::datosUsuario($pdo, $user, $pass, $externo);
  102. if (is_null($usr))
  103. $situacion = false;
  104. else {
  105. if (count($usr) > 0){
  106. $_SESSION['EI_usuario_id'] = $usr['iduser'];
  107. $_SESSION['EI_usuario_nombre'] = $usr['nombre'];
  108. $_SESSION['EI_usuario_apellidos'] = $usr['apellidos'];
  109. /*$_SESSION['EI_puesto'] = $usr['puesto'];
  110. if (isset($_POST['idusr']))
  111. $_SESSION['EI_puesto'] .= '(Ver como)';*/
  112. $_SESSION['EI_icono'] = $usr['icono'];
  113. $temp = Usuario::getRolesUsuario($pdo, $usr['iduser'], $actual->getId());
  114. $_SESSION['EI_roles'] = array_column($temp, 'idrolusuario');
  115. $situacion = true;
  116. } else
  117. $situacion = false;
  118. }
  119. return $situacion;
  120. }