'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['timeout'] = time(); if (!$externo){ $client = new nusoap_client('http://200.13.89.27/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 { $userId = $result['usuario_id']; } } } switch (obtenerDatos($pdo, $userId, $pass, $externo)){ case 'ok': $accesos = new ValidaSesion($pdo, 242); if ($accesos->tieneAcceso()) header('Location: ../home.php'); else { header('Location: ../salir.php'); } exit; break; case 'no-acceso': if ($userId > 0){ if (substr($user, 0, 2) == 'al'){ $newUsr = agregaUsuarioInterno($pdo,'ALUMNO',$userId); if($newUsr > 0){ if (obtenerDatos($pdo, $userId, $pass, $externo) == 'ok'){ $accesos = new ValidaSesion($pdo, 242); if ($accesos->tieneAcceso()) header('Location: ../home.php'); else { header('Location: ../salir.php'); } } else header('Location: ../' . $pag . '?errorIni=3'); } else header('Location: ../' . $pag . '?errorIni=3'); } else { $newUsr = agregaUsuarioInterno($pdo,'BASICO',$userId); if($newUsr > 0){ if (obtenerDatos($pdo, $userId, $pass, $externo) == 'ok'){ $accesos = new ValidaSesion($pdo, 242); if ($accesos->tieneAcceso()) header('Location: ../home.php'); else { header('Location: ../salir.php'); } } else header('Location: ../' . $pag . '?errorIni=3'); } else header('Location: ../' . $pag . '?errorIni=3'); } } else header('Location: ../' . $pag . '?errorIni=3'); exit; break; case 'no-validado': header('Location: ../' . $pag . '?errorIni=3'); exit; break; default: header('Location: ../' . $pag . '?errorIni=0'); exit; break; } } else{ header('Location: ../' . $pag . '?errorIni=1'); exit; } function obtenerDatos($pdo, $user, $pass, $externo){ $situacion = 'error'; $usr = Usuario::datosUsuario($pdo, $user, $pass, $externo); if (is_null($usr)) $situacion = 'no-validado'; else { if (count($usr) > 0){ $_SESSION['usuario_id'] = $usr['iduser']; $_SESSION['usuario_nombre'] = $usr['nombre']; $_SESSION['usuario_apellidos'] = $usr['apellidos']; if ($usr['cvepuesto'] == 'ANTERIOR'){ $concurso = new Concurso(); $concurso->getConcursoAnterior($pdo); $_SESSION['puesto'] = $usr['puesto'] . '(' .$concurso->getNombre() . 'CIDIT)'; } else $_SESSION['puesto'] = $usr['puesto']; $_SESSION['icono'] = $usr['icono']; $situacion = 'ok'; } else { $situacion = 'no-acceso'; } } return $situacion; } function agregaUsuarioInterno($pdo,$puestoTxt, $idinterno){ $idusr = 0; $idusr = Usuario::agregaUsuarioInterno($pdo, $idinterno); if ($idusr > 0){ $puesto = Usuario::getPuestoXClave($pdo, $puestoTxt); if (count($puesto) > 0){ if(Usuario::agregaUsuarioPuesto($pdo,$idusr,$puesto['idpuesto'])) { $rol = Usuario::getIdRol($pdo, $puestoTxt); if (!Usuario::agregaUsuarioRol($pdo, $idusr, $rol['idrol'], null)){ Usuario::eliminaUsuarioInterno ($pdo, $idusr); $idusr = 0; } } else Usuario::eliminaUsuarioInterno ($pdo, $idusr); } } return $idusr; }