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);
		}
	}
Example #2
0
	$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  *******
// **********************************