123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- ini_set('display_errors', 1);
- ini_set('display_startup_errors', 1);
- error_reporting(E_ALL);
- /*
- * 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'
- */
- require_once('../CIDIT/classes/Usuario.php');
- require_once("../include/nusoap/nusoap.php");
- require_once("bd_pdo.php");
- define("SECURITY", 'P4$$w0rd.S3gura#CiDit&2020');//token de seguridad
- $token = SECURITY;
- $errorBD = false;
- if (is_null($pdo))
- $errorBD = true;
- if(!isset($_POST['username']) || !isset($_POST['passwd'])){
- echo "No se recibieron los datos";
- 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){
- echo "Externo<br>";
- $externo = true;
- }
- if (!$errorBD){
- if (!$externo){
- $client = new nusoap_client('http://200.13.89.27/webservice/valida_cidit.php?wsdl', 'wsdl');//dirección del webservice
- if ($client->getError()) {
- echo "Error de conexión al webservice<br>";
- exit;
- }else{
- $result = $client->call('valida_user', array($user, $pass));//función en el webservice. user necesita ad, do
- if (!$result){
- echo "Error al obtener resultado del webservice<br>";
- exit;
- } else {
- $userId = $result['usuario_id'];
- echo "Conexión realizada para ".$result["usuario_clave"]." con mensaje: ".$result['resultMessage']."<br>";
- }
- }
- }
- switch (obtenerDatos($pdo, $userId, $pass, $externo)){
- case 'ok':
- echo "Usuario::datosUsuario OK<br>";
- exit;
- break;
- case 'no-acceso':
- if ($userId > 0){
- if (substr($user, 0, 2) == 'al'){
- echo "Usuario::datosUsuario no acceso - ALUMNO<br>";
- } else {
- echo "Usuario::datosUsuario no acceso - BASICO<br>";
- }
- } else
- echo "Usuario::datosUsuario no acceso<br>";
- exit;
- break;
- case 'no-validado':
- echo "Usuario::datosUsuario no validado<br>";
- exit;
- break;
- default:
- echo "ObtenerDatos default";
- exit;
- break;
- }
- } else{
- echo "Error de conexión a la BD";
- exit;
- }
- function obtenerDatos($pdo, $user, $pass, $externo){
- echo "Obteniendo datos...<br>";
- $situacion = 'error';
- $usr = Usuario::datosUsuario($pdo, $user, $pass, $externo);
- if (is_null($usr))
- $situacion = 'no-validado';
-
- else {
- if (count($usr) > 0){
- $situacion = 'ok';
- } else {
- $situacion = 'no-acceso';
- }
- }
- return $situacion;
- }
|