improve(webui): Handle nonce being invalidated by client logging in (#239)

This commit is contained in:
Sainan 2024-05-29 16:19:41 +02:00 committed by GitHub
parent b1e0de862f
commit 5f2adb7b47
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,6 +6,24 @@ function doLogin() {
} }
function loginFromLocalStorage() { function loginFromLocalStorage() {
doLoginRequest(
data => {
if (single.getCurrentPath() == "/webui/") {
single.loadRoute("/webui/inventory");
}
$(".displayname").text(data.DisplayName);
window.accountId = data.id;
window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce;
updateInventory();
},
() => {
logout();
alert("Login failed");
}
);
}
function doLoginRequest(succ_cb, fail_cb) {
const req = $.post({ const req = $.post({
url: "/api/login.php", url: "/api/login.php",
contentType: "text/plain", contentType: "text/plain",
@ -20,19 +38,22 @@ function loginFromLocalStorage() {
PS: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==" // anti-cheat data PS: "W0RFXVN0ZXZlIGxpa2VzIGJpZyBidXR0cw==" // anti-cheat data
}) })
}); });
req.done(data => { req.done(succ_cb);
if (single.getCurrentPath() == "/webui/") { req.fail(fail_cb);
single.loadRoute("/webui/inventory"); }
function revalidateAuthz(succ_cb) {
return doLoginRequest(
data => {
window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce;
succ_cb();
},
() => {
logout();
alert("Your credentials are no longer valid.");
single.loadRoute("/webui/"); // Show login screen
} }
$(".displayname").text(data.DisplayName); );
window.accountId = data.id;
window.authz = "accountId=" + data.id + "&nonce=" + data.Nonce;
updateInventory();
});
req.fail(() => {
logout();
alert("Login failed");
});
} }
function logout() { function logout() {
@ -176,18 +197,20 @@ function doAcquireWarframe() {
$("#warframe-to-acquire").addClass("is-invalid").focus(); $("#warframe-to-acquire").addClass("is-invalid").focus();
return; return;
} }
const req = $.post({ revalidateAuthz(() => {
url: "/custom/addItem", const req = $.post({
contentType: "application/json", url: "/custom/addItem",
data: JSON.stringify({ contentType: "application/json",
type: "Powersuit", data: JSON.stringify({
internalName: uniqueName, type: "Powersuit",
accountId: window.accountId internalName: uniqueName,
}) accountId: window.accountId
}); })
req.done(() => { });
document.getElementById("warframe-to-acquire").value = ""; req.done(() => {
updateInventory(); document.getElementById("warframe-to-acquire").value = "";
updateInventory();
});
}); });
} }
@ -201,18 +224,20 @@ function doAcquireWeapon() {
$("#weapon-to-acquire").addClass("is-invalid").focus(); $("#weapon-to-acquire").addClass("is-invalid").focus();
return; return;
} }
const req = $.post({ revalidateAuthz(() => {
url: "/custom/addItem", const req = $.post({
contentType: "application/json", url: "/custom/addItem",
data: JSON.stringify({ contentType: "application/json",
type: "Weapon", data: JSON.stringify({
internalName: uniqueName, type: "Weapon",
accountId: window.accountId internalName: uniqueName,
}) accountId: window.accountId
}); })
req.done(() => { });
document.getElementById("weapon-to-acquire").value = ""; req.done(() => {
updateInventory(); document.getElementById("weapon-to-acquire").value = "";
updateInventory();
});
}); });
} }
@ -228,12 +253,14 @@ function addGearExp(category, oid, xp) {
XP: xp XP: xp
} }
]; ];
$.post({ revalidateAuthz(() => {
url: "/api/missionInventoryUpdate.php?" + window.authz, $.post({
contentType: "text/plain", url: "/api/missionInventoryUpdate.php?" + window.authz,
data: JSON.stringify(data) contentType: "text/plain",
}).done(function () { data: JSON.stringify(data)
updateInventory(); }).done(function () {
updateInventory();
});
}); });
} }
@ -248,12 +275,14 @@ function disposeOfGear(category, oid) {
String: oid String: oid
} }
]; ];
$.post({ revalidateAuthz(() => {
url: "/api/sell.php?" + window.authz, $.post({
contentType: "text/plain", url: "/api/sell.php?" + window.authz,
data: JSON.stringify(data) contentType: "text/plain",
}).done(function () { data: JSON.stringify(data)
updateInventory(); }).done(function () {
updateInventory();
});
}); });
} }
@ -263,19 +292,21 @@ function doAcquireMiscItems() {
$("#miscitem-type").addClass("is-invalid").focus(); $("#miscitem-type").addClass("is-invalid").focus();
return; return;
} }
$.post({ revalidateAuthz(() => {
url: "/api/missionInventoryUpdate.php?" + window.authz, $.post({
contentType: "text/plain", url: "/api/missionInventoryUpdate.php?" + window.authz,
data: JSON.stringify({ contentType: "text/plain",
MiscItems: [ data: JSON.stringify({
{ MiscItems: [
ItemType: uniqueName, {
ItemCount: $("#miscitem-count").val() ItemType: uniqueName,
} ItemCount: $("#miscitem-count").val()
] }
}) ]
}).done(function () { })
alert("Successfully added."); }).done(function () {
alert("Successfully added.");
});
}); });
} }
@ -301,43 +332,45 @@ function doAcquireRiven() {
return; return;
} }
const uniqueName = "/Lotus/Upgrades/Mods/Randomized/" + $("#addriven-type").val(); const uniqueName = "/Lotus/Upgrades/Mods/Randomized/" + $("#addriven-type").val();
// Add riven type to inventory revalidateAuthz(() => {
$.post({ // Add riven type to inventory
url: "/api/missionInventoryUpdate.php?" + window.authz, $.post({
contentType: "text/plain", url: "/api/missionInventoryUpdate.php?" + window.authz,
data: JSON.stringify({ contentType: "text/plain",
RawUpgrades: [ data: JSON.stringify({
{ RawUpgrades: [
ItemType: uniqueName, {
ItemCount: 1 ItemType: uniqueName,
ItemCount: 1
}
]
})
}).done(function () {
// Get riven's assigned id
$.get("/api/inventory.php?" + window.authz).done(data => {
for (const rawUpgrade of data.RawUpgrades) {
if (rawUpgrade.ItemType === uniqueName) {
// Add fingerprint to riven
$.post({
url: "/api/artifacts.php?" + window.authz,
contentType: "text/plain",
data: JSON.stringify({
Upgrade: {
ItemType: uniqueName,
UpgradeFingerprint: JSON.stringify(fingerprint),
ItemId: rawUpgrade.LastAdded
},
LevelDiff: 0,
Cost: 0,
FusionPointCost: 0
})
}).done(function () {
alert("Successfully added.");
});
break;
}
} }
] });
})
}).done(function () {
// Get riven's assigned id
$.get("/api/inventory.php?" + window.authz).done(data => {
for (const rawUpgrade of data.RawUpgrades) {
if (rawUpgrade.ItemType === uniqueName) {
// Add fingerprint to riven
$.post({
url: "/api/artifacts.php?" + window.authz,
contentType: "text/plain",
data: JSON.stringify({
Upgrade: {
ItemType: uniqueName,
UpgradeFingerprint: JSON.stringify(fingerprint),
ItemId: rawUpgrade.LastAdded
},
LevelDiff: 0,
Cost: 0,
FusionPointCost: 0
})
}).done(function () {
alert("Successfully added.");
});
break;
}
}
}); });
}); });
} }