123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- /*
- * Valida usuario con el webservice BD y devuelve contraseña para validar con PHP
- *
- * Recibe:
- * POST: usuario, password
- *
- * Error:
- * 0 - No se recibieron datos
- * 1 - Usuario/Contraseña incorrectos
- * 2 - Usuario no esta en BD
- * 3 - No existe usuario
- *
- * Success:
- * Redirecciona a index.php
- *
- * Result (del webservice): result es un arreglo con los campos:
- * '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'
- */
- session_start();
- //require_once("../classes/Log.php");
- require_once("../include/nusoap/nusoap.php");
- require_once('../classes/Concurso.php');
- require_once('../classes/Usuario.php');
- require_once('../classes/ValidaSesion.php');
- require_once("../include/bd_pdo.php");
- define("SECURITY", 'P4$$w0rd.S3gura#CiDit&2020');//token de seguridad
- $token = SECURITY;
- $pag = explode('?', $_SERVER["HTTP_REFERER"]);
- $pag = explode('/', $pag[0]);
- $pag = $pag[count($pag)-1];
- $errorBD = false;
- if (is_null($pdo))
- $errorBD = true;
- if(!isset($_POST['username']) || !isset($_POST['passwd'])){
- header('Location: ../' . $pag . '?errorIni=0');
- exit;
- }
- $user = trim(filter_input(INPUT_POST, 'username'));//limpia texto
- $pass = $_POST['passwd']; //trim(filter_input(INPUT_POST, "passwd"));//limpia texto
- $externo = false;
- if (intval(substr($user, 2)) == 0)
- $externo = true;
- if (!$errorBD){
- $_SESSION['EI_timeout'] = time();
- if (!$externo){
- $client = new nusoap_client('http://200.13.89.48/webservice/valida_cidit.php?wsdl', 'wsdl');//dirección del webservice
- if ($client->getError()) {
- header('Location: ../' . $pag . '?errorIni=1');
- exit;
- }else{
- $result = $client->call('valida_user', array($user, $pass));//función en el webservice. user necesita ad, do
- if (!$result){
- header('Location: ../' . $pag . '?errorIni=1');
- exit;
- } else {
- if ($result['usuario_clave'] != '12999')
- $userId = $result['usuario_id'];
- else
- if (isset ($_POST['idusr']))
- $userId = intval($_POST['idusr']);
- else
- $userId = $result['usuario_id'];
- }
- }
- }
- else {
- $userId = $user;
- }
- if (obtenerDatos($pdo, $userId, $pass, $externo)){
- $accesos = new ValidaSesion($pdo, 341);
- if ($accesos->tieneAcceso()){
- if (!isset($_POST['registro']))
- header('Location: ../home.php');
- else
- header('Location: ../registro.php');
- }
- else
- header('Location: ../salir.php');
- exit;
- } else
- header('Location: ../' . $pag . '?errorIni=3');
- } else{
- header('Location: ../' . $pag . '?errorIni=1');
- exit;
- }
- function obtenerDatos($pdo, $user, $pass, $externo){
- if(!isset($_SESSION['EI_actual'])){
- $actual = new Concurso();
- $actual->getConcursoActivo($pdo);
- $_SESSION['EI_actual'] = serialize($actual);
- }
- $actual = unserialize($_SESSION['EI_actual']);
- $usr = Usuario::datosUsuario($pdo, $user, $pass, $externo);
- if (is_null($usr))
- $situacion = false;
- else {
- if (count($usr) > 0){
- $_SESSION['EI_usuario_id'] = $usr['iduser'];
- $_SESSION['EI_usuario_nombre'] = $usr['nombre'];
- $_SESSION['EI_usuario_apellidos'] = $usr['apellidos'];
- /*$_SESSION['EI_puesto'] = $usr['puesto'];
- if (isset($_POST['idusr']))
- $_SESSION['EI_puesto'] .= '(Ver como)';*/
- $_SESSION['EI_icono'] = $usr['icono'];
- $temp = Usuario::getRolesUsuario($pdo, $usr['iduser'], $actual->getId());
- $_SESSION['EI_roles'] = array_column($temp, 'idrolusuario');
- $situacion = true;
- } else
- $situacion = false;
- }
- return $situacion;
- }
|