mirror of
https://github.com/1f349/admin.1f349.com.git
synced 2024-11-09 22:32:57 +00:00
Convert to pop2.ts
This commit is contained in:
parent
48375db450
commit
955d600d31
@ -1,5 +1,4 @@
|
|||||||
import {get} from "svelte/store";
|
import {loginStore} from "../stores/login";
|
||||||
import {getBearer, loginStore} from "../stores/login";
|
|
||||||
import {POP2} from "./pop2";
|
import {POP2} from "./pop2";
|
||||||
|
|
||||||
const TOKEN_AUTHORIZE_API = import.meta.env.VITE_SSO_ORIGIN + "/authorize";
|
const TOKEN_AUTHORIZE_API = import.meta.env.VITE_SSO_ORIGIN + "/authorize";
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
import type {RequestInfo} from "undici-types";
|
||||||
|
|
||||||
export const POP2 = (function (w) {
|
export const POP2 = (function (w) {
|
||||||
const windowName = "pop2_oauth2_login_popup";
|
const windowName = "pop2_oauth2_login_popup";
|
||||||
|
|
||||||
@ -37,45 +39,45 @@ export const POP2 = (function (w) {
|
|||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
function popupCenterScreen(url, title, w, h) {
|
function popupCenterScreen(url: string | URL, title: string, w: number, h: number) {
|
||||||
const top = (screen.availHeight - h) / 4,
|
const top = (screen.availHeight - h) / 4,
|
||||||
left = (screen.availWidth - w) / 2;
|
left = (screen.availWidth - w) / 2;
|
||||||
return openWindow(url, title, `scrollbars=yes,width=${w},height=${h},top=${top},left=${left}`);
|
return openWindow(url, title, `scrollbars=yes,width=${w},height=${h},top=${top},left=${left}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
function openWindow(url, winnm, options) {
|
function openWindow(url: string | URL, winnm: string | undefined, options: string) {
|
||||||
const wTop = firstAvailableValue([window.screen.availTop, window.screenY, window.screenTop, 0]);
|
const wTop = firstAvailableValue([window.screen.availTop, window.screenY, window.screenTop, 0]);
|
||||||
const wLeft = firstAvailableValue([window.screen.availLeft, window.screenX, window.screenLeft, 0]);
|
const wLeft = firstAvailableValue([window.screen.availLeft, window.screenX, window.screenLeft, 0]);
|
||||||
let top = "0",
|
let top = 0,
|
||||||
left = "0",
|
left = 0,
|
||||||
result;
|
result;
|
||||||
if ((result = /top=(\d+)/g.exec(options))) top = parseInt(result[1]);
|
if ((result = /top=(\d+)/g.exec(options))) top = parseInt(result[1]);
|
||||||
if ((result = /left=(\d+)/g.exec(options))) left = parseInt(result[1]);
|
if ((result = /left=(\d+)/g.exec(options))) left = parseInt(result[1]);
|
||||||
let w;
|
let w;
|
||||||
if (options) {
|
if (options) {
|
||||||
options = options.replace("top=" + top, "top=" + (parseInt(top) + wTop));
|
options = options.replace("top=" + top, "top=" + (top + wTop));
|
||||||
options = options.replace("left=" + left, "left=" + (parseInt(left) + wLeft));
|
options = options.replace("left=" + left, "left=" + (left + wLeft));
|
||||||
w = window.open(url, winnm, options);
|
w = window.open(url, winnm, options);
|
||||||
} else w = window.open(url, winnm);
|
} else w = window.open(url, winnm);
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
function firstAvailableValue(arr) {
|
function firstAvailableValue(arr: any[]) {
|
||||||
for (let i = 0; i < arr.length; i++) if (typeof arr[i] != "undefined") return arr[i];
|
for (let i = 0; i < arr.length; i++) if (typeof arr[i] != "undefined") return arr[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
let client_endpoint,
|
let client_endpoint: string,
|
||||||
client_id,
|
client_id: string,
|
||||||
scope = "",
|
scope = "",
|
||||||
redirect_uri = window.location.href.substr(0, window.location.href.length - window.location.hash.length).replace(/#$/, ""),
|
redirect_uri = window.location.href.slice(0, window.location.href.length - window.location.hash.length).replace(/#$/, ""),
|
||||||
access_token = localStorage.getItem("pop2_access_token"),
|
access_token: string | null = localStorage.getItem("pop2_access_token"),
|
||||||
callbackWaitForToken,
|
callbackWaitForToken: ((access_token: string) => void) | undefined,
|
||||||
w_width = 400,
|
w_width = 400,
|
||||||
w_height = 360;
|
w_height = 360;
|
||||||
|
|
||||||
const POP2 = {
|
const POP2 = {
|
||||||
// init
|
// init
|
||||||
init: function (f_client_endpoint, f_client_id, f_scope, width, height) {
|
init: function (f_client_endpoint: string, f_client_id: string, f_scope: string, width: number, height: number) {
|
||||||
if (!f_client_endpoint) return false;
|
if (!f_client_endpoint) return false;
|
||||||
if (!f_client_id) return false;
|
if (!f_client_id) return false;
|
||||||
client_endpoint = f_client_endpoint;
|
client_endpoint = f_client_endpoint;
|
||||||
@ -85,13 +87,13 @@ export const POP2 = (function (w) {
|
|||||||
if (height) w_height = height;
|
if (height) w_height = height;
|
||||||
},
|
},
|
||||||
// receive token from popup
|
// receive token from popup
|
||||||
receiveToken: function (token, expires_in) {
|
receiveToken: function (token: string | boolean | null, expires_in: number) {
|
||||||
if (token !== "ERROR") {
|
if (typeof token === "string" && token !== "ERROR") {
|
||||||
access_token = token;
|
access_token = token;
|
||||||
localStorage.setItem("pop2_access_token", access_token);
|
localStorage.setItem("pop2_access_token", access_token);
|
||||||
if (callbackWaitForToken) callbackWaitForToken(access_token);
|
if (callbackWaitForToken) callbackWaitForToken(access_token);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
access_token = undefined;
|
access_token = null;
|
||||||
localStorage.removeItem("pop2_access_token");
|
localStorage.removeItem("pop2_access_token");
|
||||||
}, expires_in * 1000);
|
}, expires_in * 1000);
|
||||||
} else if (token === false) {
|
} else if (token === false) {
|
||||||
@ -101,7 +103,7 @@ export const POP2 = (function (w) {
|
|||||||
// pass the access token to callback
|
// pass the access token to callback
|
||||||
// if not logged in this triggers login popup;
|
// if not logged in this triggers login popup;
|
||||||
// use isLoggedIn to check login first to prevent popup blocker
|
// use isLoggedIn to check login first to prevent popup blocker
|
||||||
getToken: function (callback, popup = true) {
|
getToken: function (callback: (access_token: string) => void, popup = true) {
|
||||||
if (!client_id || !redirect_uri || !scope) {
|
if (!client_id || !redirect_uri || !scope) {
|
||||||
alert("You need init() first. Check the program flow.");
|
alert("You need init() first. Check the program flow.");
|
||||||
return false;
|
return false;
|
||||||
@ -132,7 +134,7 @@ export const POP2 = (function (w) {
|
|||||||
access_token = "";
|
access_token = "";
|
||||||
localStorage.removeItem("pop2_access_token");
|
localStorage.removeItem("pop2_access_token");
|
||||||
},
|
},
|
||||||
clientRequest: function (resource, options, refresh = false) {
|
clientRequest: function (resource: RequestInfo, options: RequestInit, refresh = false) {
|
||||||
const sendRequest = function () {
|
const sendRequest = function () {
|
||||||
options.credentials = "include";
|
options.credentials = "include";
|
||||||
if (!options.headers) options.headers = {};
|
if (!options.headers) options.headers = {};
|
||||||
@ -150,7 +152,7 @@ export const POP2 = (function (w) {
|
|||||||
};
|
};
|
||||||
const resendRequest = function () {
|
const resendRequest = function () {
|
||||||
return new Promise(function (res, rej) {
|
return new Promise(function (res, rej) {
|
||||||
access_token = undefined;
|
access_token = null;
|
||||||
POP2.getToken(function () {
|
POP2.getToken(function () {
|
||||||
sendRequest()
|
sendRequest()
|
||||||
.then(function (x) {
|
.then(function (x) {
|
Loading…
Reference in New Issue
Block a user