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