mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2026-04-03 05:57:24 +02:00
refactor: update Dropbox authentication handling with BroadcastChannel for improved token management (#1367)
This commit is contained in:
parent
b6fbc66ec3
commit
b7af737525
3 changed files with 30 additions and 10 deletions
6
package-lock.json
generated
6
package-lock.json
generated
|
|
@ -1362,6 +1362,7 @@
|
|||
"integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"undici-types": "~7.16.0"
|
||||
}
|
||||
|
|
@ -1402,6 +1403,7 @@
|
|||
"integrity": "sha512-gfajTHVCiwpxRj1qh0Sh/5bbGLG4F/ZH/V9xvFVoFddpITfMta9YGow0W6ZpTTORv2vdJuz9TnrNSmjKvpOf4g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vitest/browser": "4.0.18",
|
||||
"@vitest/mocker": "4.0.18",
|
||||
|
|
@ -1883,6 +1885,7 @@
|
|||
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
|
||||
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
|
|
@ -2175,6 +2178,7 @@
|
|||
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
|
|
@ -2486,6 +2490,7 @@
|
|||
"integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.27.0",
|
||||
"fdir": "^6.5.0",
|
||||
|
|
@ -2561,6 +2566,7 @@
|
|||
"integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vitest/expect": "4.0.18",
|
||||
"@vitest/mocker": "4.0.18",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
const error = params.get("error");
|
||||
|
||||
if (code) getToken();
|
||||
else if (error) window.opener.Cloud.providers.dropbox.returnError(params.get("error_description"));
|
||||
else if (error) returnError(params.get("error_description"));
|
||||
else startAuth();
|
||||
|
||||
function startAuth() {
|
||||
|
|
@ -31,13 +31,23 @@
|
|||
.catch(error => console.error(error));
|
||||
}
|
||||
|
||||
function returnError(description) {
|
||||
const channel = new BroadcastChannel("dropbox-auth");
|
||||
channel.postMessage({type: "error", description});
|
||||
channel.close();
|
||||
window.close();
|
||||
}
|
||||
|
||||
function getToken() {
|
||||
auth.setCodeVerifier(window.sessionStorage.getItem("codeVerifier"));
|
||||
auth
|
||||
.getAccessTokenFromCode(REDIRECT_URI, code)
|
||||
.then(resp => {
|
||||
const token = resp.result.access_token;
|
||||
window.opener.Cloud.providers.dropbox.setDropBoxToken(token);
|
||||
const channel = new BroadcastChannel("dropbox-auth");
|
||||
channel.postMessage({type: "token", token});
|
||||
channel.close();
|
||||
window.close();
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
|
|
|
|||
|
|
@ -95,26 +95,30 @@ window.Cloud = (function () {
|
|||
reject(new Error("Timeout. No auth for Dropbox"));
|
||||
}, 120 * 1000);
|
||||
|
||||
window.addEventListener("dropboxauth", e => {
|
||||
const channel = new BroadcastChannel("dropbox-auth");
|
||||
channel.onmessage = async ({data}) => {
|
||||
channel.close();
|
||||
clearTimeout(watchDog);
|
||||
resolve();
|
||||
});
|
||||
if (data.type === "token") {
|
||||
await this.setDropBoxToken(data.token);
|
||||
resolve();
|
||||
} else {
|
||||
this.returnError(data.description);
|
||||
reject(new Error(data.description));
|
||||
}
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
// Callback function for auth window
|
||||
async setDropBoxToken(token) {
|
||||
DEBUG.cloud && console.info("Access token:", token);
|
||||
setToken(this.name, token);
|
||||
await this.connect(token);
|
||||
this.authWindow.close();
|
||||
window.dispatchEvent(new Event("dropboxauth"));
|
||||
},
|
||||
|
||||
returnError(errorDescription) {
|
||||
console.error(errorDescription);
|
||||
tip(errorDescription.replaceAll("+", " "), true, "error", 4000);
|
||||
this.authWindow.close();
|
||||
},
|
||||
|
||||
async getLink(path) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue