parent
b446a4a915
commit
145f734907
After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,81 @@
|
|||||||
|
import { T } from "../translations";
|
||||||
|
import { openStandaloneLink } from "./config";
|
||||||
|
|
||||||
|
export let WEB_STEAM_SSO_AUTHENTICATED = false;
|
||||||
|
|
||||||
|
export async function authorizeViaSSOToken(app, dialogs) {
|
||||||
|
if (G_IS_STANDALONE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.location.search.includes("sso_logout_silent")) {
|
||||||
|
window.localStorage.setItem("steam_sso_auth_token", "");
|
||||||
|
window.location.replace("/");
|
||||||
|
return new Promise(() => null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.location.search.includes("sso_logout")) {
|
||||||
|
const { ok } = dialogs.showWarning(T.dialogs.steamSsoError.title, T.dialogs.steamSsoError.desc);
|
||||||
|
window.localStorage.setItem("steam_sso_auth_token", "");
|
||||||
|
ok.add(() => window.location.replace("/"));
|
||||||
|
return new Promise(() => null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.location.search.includes("steam_sso_no_ownership")) {
|
||||||
|
const { ok, getStandalone } = dialogs.showWarning(
|
||||||
|
T.dialogs.steamSsoNoOwnership.title,
|
||||||
|
T.dialogs.steamSsoNoOwnership.desc,
|
||||||
|
["ok", "getStandalone:good"]
|
||||||
|
);
|
||||||
|
window.localStorage.setItem("steam_sso_auth_token", "");
|
||||||
|
getStandalone.add(() => {
|
||||||
|
openStandaloneLink(app, "sso_ownership");
|
||||||
|
window.location.replace("/");
|
||||||
|
});
|
||||||
|
ok.add(() => window.location.replace("/"));
|
||||||
|
return new Promise(() => null);
|
||||||
|
}
|
||||||
|
|
||||||
|
const token = window.localStorage.getItem("steam_sso_auth_token");
|
||||||
|
if (!token) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
const apiUrl = app.clientApi.getEndpoint();
|
||||||
|
console.warn("Authorizing via token:", token);
|
||||||
|
|
||||||
|
const verify = async () => {
|
||||||
|
const token = window.localStorage.getItem("steam_sso_auth_token");
|
||||||
|
if (!token) {
|
||||||
|
window.location.replace("?sso_logout");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await Promise.race([
|
||||||
|
fetch(apiUrl + "/v1/sso/refresh", {
|
||||||
|
method: "POST",
|
||||||
|
body: token,
|
||||||
|
headers: {
|
||||||
|
"x-api-key": "d5c54aaa491f200709afff082c153ef2",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
setTimeout(() => reject("timeout exceeded"), 20000);
|
||||||
|
}),
|
||||||
|
]);
|
||||||
|
const responseText = await response.json();
|
||||||
|
if (!responseText.token) {
|
||||||
|
console.warn("Failed to register");
|
||||||
|
window.localStorage.setItem("steam_sso_auth_token", "");
|
||||||
|
window.location.replace("?sso_logout");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.localStorage.setItem("steam_sso_auth_token", responseText.token);
|
||||||
|
app.clientApi.token = responseText.token;
|
||||||
|
WEB_STEAM_SSO_AUTHENTICATED = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
await verify();
|
||||||
|
setInterval(verify, 120000);
|
||||||
|
}
|
Loading…
Reference in new issue