function getLoginResult($usuario, $clave, $loginParaCambiarClave = false) { global $conn; $xml = '<?xml version="1.0" encoding="utf-8"?>'; $xml.= "<loginResult><error>"; try { // Validación 1.. if ($usuario == "") { $xml.= "<codigo>1</codigo>"; $xml.= "<mensaje>Usuario vacío.</mensaje>"; } $controlBcra = 0; $error = false; if ($usuario == "") { $xml.= "<codigo>1</codigo>"; $xml.= "<mensaje>Usuario vacío.</mensaje>"; $error = true; } else { $params = array(":usuario" => $usuario); $sql = "SELECT uw_ctrbcra FROM afi.auw_usuarioweb WHERE uw_fechabaja IS NULL AND uw_usuario = :usuario"; $controlBcra = ValorSql($sql, "", $params); if ($controlBcra == 1) { // Si hay que hacerle controles especiales al usuario.. $params = array(":usuario" => $usuario); $sql = "SELECT uw_id FROM afi.auw_usuarioweb WHERE uw_fechabaja IS NULL AND uw_usuario = :usuario"; $id = ValorSql($sql, "", $params); // Validación 2.. $curs = null; $params = array(":id" => $id, ":password" => $clave, ":ip" => $_SERVER["REMOTE_ADDR"]); $sql = "BEGIN art.cotizacion.get_ctrlpassword(:id, :password, :ip, :data); END;"; $stmt = DBExecSP($conn, $curs, $sql, $params); $rowCtrl = DBGetSP($curs); switch ($rowCtrl["NERROR"]) { case 1: case 2: case 4: $xml.= "<codigo>2</codigo>"; $xml.= "<mensaje>".$rowCtrl["SERROR"]."</mensaje>"; $error = true; break; } $cambiarPassword = ($rowCtrl["NERROR"] == 3); if (($cambiarPassword) and (!$loginParaCambiarClave)) { $xml.= "<codigo>3</codigo>"; $xml.= "<mensaje>".$rowCtrl["SERROR"]."</mensaje>"; $error = true; } elseif ($clave == "") { $xml.= "<codigo>4</codigo>"; $xml.= "<mensaje>Contraseña vacía.</mensaje>"; $error = true; } } else { // Validaciones a usuarios comunes.. $params = array(":usuario" => $usuario); $sql = "SELECT uw_forzarclave FROM afi.auw_usuarioweb WHERE uw_fechabaja IS NULL AND uw_usuario = :usuario"; $cambiarPassword = (ValorSql($sql, "", $params) == 1); if (($cambiarPassword) and (!$loginParaCambiarClave)) { $xml.= "<codigo>8</codigo>"; $xml.= "<mensaje>La contraseña está vencida, debe actualizarla.</mensaje>"; $error = true; } elseif ($clave == "") { $xml.= "<codigo>9</codigo>"; $xml.= "<mensaje>Contraseña vacía.</mensaje>"; $error = true; } else { $params = array(":usuario" => $usuario); $sql = "SELECT uw_password FROM afi.auw_usuarioweb WHERE uw_fechabaja IS NULL AND uw_usuario = :usuario"; $pass = ValorSql($sql, "", $params); if ($pass == "") { $xml.= "<codigo>10</codigo>"; $xml.= "<mensaje>Usuario o contraseña inválido.</mensaje>"; $error = true; } elseif ($pass != $clave) { $xml.= "<codigo>11</codigo>"; $xml.= "<mensaje>Usuario o contraseña inválido.</mensaje>"; $error = true; } } } } if ((!$error) and ($controlBcra == 1)) { // Si ingresó correctamente y si hay que hacerle controles especiales al usuario, valido que se haya conectado desde una IP permitida.. $params = array(":usuario" => $usuario); $sql = "SELECT uw_idcanal, uw_identidad, uw_nivel FROM afi.auw_usuarioweb WHERE uw_usuario = :usuario"; $stmt = DBExecSql($conn, $sql, $params); $row = DBGetQuery($stmt); if ($row["UW_NIVEL"] != 99) { // Si tiene nivel 99 no se chequea desde que IP se conecta.. $params = array(":idcanal" => $row["UW_IDCANAL"], ":identidad" => $row["UW_IDENTIDAD"]); $sql = "SELECT ip_rangodesde, ip_rangohasta FROM web.wip_ipspermitidas WHERE ip_idpagina = 25 AND ip_idcanal = :idcanal AND ip_identidad = :identidad AND ip_fechabaja IS NULL"; $stmt = DBExecSql($conn, $sql, $params); $enRango = true; while ($row = DBGetQuery($stmt)) { $enRango = ipEnRango($_SERVER["REMOTE_ADDR"], $row["IP_RANGODESDE"], $row["IP_RANGOHASTA"]); if ($enRango) break; } if (!$enRango) { $xml.= "<codigo>15</codigo>"; $xml.= "<mensaje>Usted no tiene permiso para conectarse desde esa ubicación.</mensaje>"; $error = true; } } } $xml.= "</error></loginResult>"; if ($error) return new soapval("return", "xsd:string", $xml); else { $params = array(":usuario" => $usuario); $sql = "SELECT uw_id FROM afi.auw_usuarioweb WHERE uw_fechabaja IS NULL AND uw_usuario = :usuario"; $id = ValorSql($sql, "", $params); LogAccess($id, 4, gethostbyaddr($_SERVER['REMOTE_ADDR']), $_SERVER["REMOTE_ADDR"], 25); // Registro el último login.. $params = array(":id" => $id); $sql = "UPDATE auw_usuarioweb SET uw_ultimologin = SYSDATE WHERE uw_id = :id"; DBExecSql($conn, $sql, $params); return ""; } } catch (Exception $e) { $xml = '<?xml version="1.0" encoding="utf-8"?>'; //$xml.= "<error>".$e->getMessage()."</error>"; $xml.= "<loginResult><error><fecha>".date("d/m/Y")."</fecha><hora>".date("H:i:s")."</hora><mensaje>Ocurrió un error inesperado en la función getLoginResult.</mensaje></error></loginResult>"; return new soapval("return", "xsd:string", $xml); } }
$row = DBGetQuery($stmt); if ($row["UW_NIVEL"] != 99) { // Si tiene nivel 99 no se chequea desde que IP se conecta.. $params = array(":idcanal" => $row["UW_IDCANAL"], ":identidad" => $row["UW_IDENTIDAD"]); $sql = "SELECT ip_rangodesde, ip_rangohasta FROM web.wip_ipspermitidas WHERE ip_idpagina = 25 AND ip_idcanal = :idcanal AND ip_identidad = :identidad AND ip_fechabaja IS NULL"; $stmt = DBExecSql($conn, $sql, $params); $enRango = true; while ($row = DBGetQuery($stmt)) { $enRango = ipEnRango($_SERVER["REMOTE_ADDR"], $row["IP_RANGODESDE"], $row["IP_RANGOHASTA"]); if ($enRango) break; } if (!$enRango) { $_SESSION["fieldError"] = "sr"; $_SESSION["msgError"] = "Usted no tiene permiso para conectarse desde esa ubicación (16)."; $error = true; } } } // ********************************** // ******* Fin validaciones ******* // **********************************