Files
kiss-translator/src/libs/auth.js

45 lines
995 B
JavaScript
Raw Normal View History

2023-08-31 00:18:57 +08:00
import { getMsauth, setMsauth } from "./storage";
import { URL_MICROSOFT_AUTH } from "../config";
2023-08-10 11:55:40 +08:00
import { fetchData } from "./fetch";
2023-07-20 13:45:41 +08:00
2023-08-05 15:32:51 +08:00
const parseMSToken = (token) => {
try {
return JSON.parse(atob(token.split(".")[1])).exp;
} catch (err) {
console.log("[parseMSToken]", err);
}
return 0;
};
2023-07-20 13:45:41 +08:00
/**
* 闭包缓存token减少对storage查询
* @returns
*/
const _msAuth = () => {
let { token, exp } = {};
return async () => {
// 查询内存缓存
const now = Date.now();
if (token && exp * 1000 > now + 1000) {
return [token, exp];
}
// 查询storage缓存
2023-08-31 00:18:57 +08:00
const res = await getMsauth();
token = res?.token;
exp = res?.exp;
2023-07-20 13:45:41 +08:00
if (token && exp * 1000 > now + 1000) {
return [token, exp];
}
// 缓存没有或失效,查询接口
2023-08-10 11:55:40 +08:00
token = await fetchData(URL_MICROSOFT_AUTH);
2023-07-20 13:45:41 +08:00
exp = parseMSToken(token);
2023-08-31 00:18:57 +08:00
await setMsauth({ token, exp });
2023-07-20 13:45:41 +08:00
return [token, exp];
};
};
export const msAuth = _msAuth();