65 lines
2.1 KiB
JavaScript
65 lines
2.1 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../../../common/vendor.js");
|
|
function useGameAuth(proxy) {
|
|
let loginPromise = null;
|
|
function hasToken() {
|
|
return !!String(common_vendor.index.getStorageSync("token") || "").trim();
|
|
}
|
|
function clearToken() {
|
|
common_vendor.index.removeStorageSync("token");
|
|
}
|
|
function wxLoginCode() {
|
|
return new Promise((resolve, reject) => {
|
|
common_vendor.index.login({
|
|
provider: "weixin",
|
|
success: (res) => (res == null ? void 0 : res.code) ? resolve(res.code) : reject(new Error("微信登录未返回 code")),
|
|
fail: reject
|
|
});
|
|
});
|
|
}
|
|
async function loginWithCode(code) {
|
|
var _a;
|
|
const res = await proxy.apiUrl({
|
|
url: "/api/login/mnpLogin",
|
|
method: "POST",
|
|
data: { code }
|
|
}, false);
|
|
if ((res == null ? void 0 : res.code) !== 1 || !((_a = res.data) == null ? void 0 : _a.token)) {
|
|
clearToken();
|
|
throw new Error((res == null ? void 0 : res.msg) || "登录失败");
|
|
}
|
|
common_vendor.index.setStorageSync("token", res.data.token);
|
|
common_vendor.index.setStorageSync("userData", res.data);
|
|
return true;
|
|
}
|
|
async function verifyOrLogin() {
|
|
if (hasToken()) {
|
|
try {
|
|
const res = await proxy.apiUrl({ url: "/api/user/info", method: "POST" }, false);
|
|
if ((res == null ? void 0 : res.code) === 1 && res.data) {
|
|
common_vendor.index.setStorageSync("userData", res.data);
|
|
return true;
|
|
}
|
|
if ((res == null ? void 0 : res.code) !== -1)
|
|
return true;
|
|
} catch (_) {
|
|
return true;
|
|
}
|
|
clearToken();
|
|
}
|
|
const code = await wxLoginCode();
|
|
return loginWithCode(code);
|
|
}
|
|
async function ensureLoggedIn() {
|
|
if (loginPromise)
|
|
return loginPromise;
|
|
loginPromise = verifyOrLogin().then((ok) => !!ok).catch(() => false).finally(() => {
|
|
loginPromise = null;
|
|
});
|
|
return loginPromise;
|
|
}
|
|
return { ensureLoggedIn };
|
|
}
|
|
exports.useGameAuth = useGameAuth;
|
|
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/tongji/endless-game/composables/useGameAuth.js.map
|