fix: avoid social callback session race
This commit is contained in:
@@ -215,6 +215,13 @@ function savePendingSocialBind(data) {
|
||||
}
|
||||
}
|
||||
|
||||
function hasSocialCallback() {
|
||||
const params = new URLSearchParams(window.location.search || '')
|
||||
const provider = String(params.get('provider') || params.get('type') || '').trim()
|
||||
const code = String(params.get('code') || '').trim()
|
||||
return Boolean(provider && code)
|
||||
}
|
||||
|
||||
async function handleSocialCallback() {
|
||||
const params = new URLSearchParams(window.location.search || '')
|
||||
const provider = String(params.get('provider') || params.get('type') || '').trim()
|
||||
@@ -391,8 +398,11 @@ function goRegister() {
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
if (hasSocialCallback()) {
|
||||
await handleSocialCallback()
|
||||
return
|
||||
}
|
||||
await loadSocialConfig()
|
||||
await handleSocialCallback()
|
||||
if (needCaptcha.value) {
|
||||
await refreshLoginCaptcha()
|
||||
}
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
"name": "vendor-vue"
|
||||
},
|
||||
"index.html": {
|
||||
"file": "assets/app-D7SWy-KG.js",
|
||||
"file": "assets/app-BV_xMlg4.js",
|
||||
"name": "app",
|
||||
"src": "index.html",
|
||||
"isEntry": true,
|
||||
@@ -323,7 +323,7 @@
|
||||
]
|
||||
},
|
||||
"login.html": {
|
||||
"file": "assets/login-C88J0b5r.js",
|
||||
"file": "assets/login-D0qy0-VA.js",
|
||||
"name": "login",
|
||||
"src": "login.html",
|
||||
"isEntry": true,
|
||||
@@ -401,7 +401,7 @@
|
||||
]
|
||||
},
|
||||
"src/pages/LoginPage.vue": {
|
||||
"file": "assets/LoginPage-N6sdjwkY.js",
|
||||
"file": "assets/LoginPage-B-9NNWX9.js",
|
||||
"name": "LoginPage",
|
||||
"src": "src/pages/LoginPage.vue",
|
||||
"isDynamicEntry": true,
|
||||
@@ -418,7 +418,7 @@
|
||||
"_auth-CuW_jyJD.js"
|
||||
],
|
||||
"css": [
|
||||
"assets/LoginPage-CSaMrhQm.css"
|
||||
"assets/LoginPage-udDwyYMW.css"
|
||||
]
|
||||
},
|
||||
"src/pages/RegisterPage.vue": {
|
||||
|
||||
1
static/app/assets/LoginPage-B-9NNWX9.js
Normal file
1
static/app/assets/LoginPage-B-9NNWX9.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
static/app/assets/LoginPage-udDwyYMW.css
Normal file
1
static/app/assets/LoginPage-udDwyYMW.css
Normal file
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginPage-N6sdjwkY.js","./vendor-vue-Da_zwKNU.js","./SocialLoginButtons-BaFXslgf.js","./base-C_0HtztH.js","./base-CiSqh4F9.css","./el-overlay-ckkTzDcK.js","./aria-DLpFpzDe.js","./http-BDcxFXLM.js","./vendor-axios-B9ygI19o.js","./index-D04QrwME.js","./el-overlay-hkg5a9kt.css","./auth-CuW_jyJD.js","./style-CEbARg1o.js","./style-BHGuKLUF.css","./SocialLoginButtons-qO3SCoE7.css","./LoginPage-CSaMrhQm.css","./RegisterPage-Bypz6ilN.js","./el-card-cnxuvbL3.js","./el-card-BqOrgVp1.css","./el-alert-BgJljmz-.js","./el-button-xGNUoXVX.js","./el-button-BRDnKxwT.css","./el-input-nl0Ylqa_.js","./el-input-D6B3r8CH.css","./el-alert-B-NgiIln.css","./password-7ryi82gE.js","./RegisterPage-LYXwWYc1.css","./ResetPasswordPage-Znm7wIOo.js","./ResetPasswordPage-DAB63ins.css","./SocialBindCallbackPage-BXLD-LiQ.js","./el-skeleton-item-cWa5ANvD.js","./el-skeleton-item-BLY1jEuR.css","./settings-C8OWd3zp.js","./SocialBindCallbackPage-BZgzv_7a.css","./VerifyResultPage-Du3cLyZ2.js","./VerifyResultPage-BnGv8vyq.css","./AppLayout-8mkxrTVV.js","./user-DIrCtqzm.js","./el-popper-_4NhtSRX.js","./el-popper-BrfLRiIr.css","./user-B5lTGWdM.css","./AppLayout-C0FaVSZn.css","./AccountsPage-DZM5eF8A.js","./accounts-HALpNswY.js","./accounts-DqlHDq0H.css","./el-select-BADfKG7m.js","./el-select-B0XIb2QK.css","./vendor-realtime-CA1CrNgP.js","./AccountsPage-DKewJ7S7.css","./SchedulesPage-vAAprGPM.js","./el-pagination-D16TMO1B.js","./el-pagination-B1FwbX1n.css","./SchedulesPage-Dxq2ghmQ.css","./ScreenshotsPage-DrfiqfWk.js","./ScreenshotsPage-BhLfAzHf.css"])))=>i.map(i=>d[i]);
|
||||
import{_ as v}from"./style-CEbARg1o.js";import{r as g,c as R,o as y,a as A,b as L,d as k,e as b}from"./vendor-vue-Da_zwKNU.js";const w={};function V(p,l){const a=g("RouterView");return y(),R(a)}const O=v(w,[["render",V]]),T="modulepreload",D=function(p,l){return new URL(p,l).href},f={},o=function(l,a,u){let _=Promise.resolve();if(a&&a.length>0){let P=function(e){return Promise.all(e.map(s=>Promise.resolve(s).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),h=t?.nonce||t?.getAttribute("nonce");_=P(a.map(e=>{if(e=D(e,u),e in f)return;f[e]=!0;const s=e.endsWith(".css"),c=s?'[rel="stylesheet"]':"";if(u)for(let i=n.length-1;i>=0;i--){const m=n[i];if(m.href===e&&(!s||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${c}`))return;const r=document.createElement("link");if(r.rel=s?"stylesheet":T,s||(r.as="script"),r.crossOrigin="",r.href=e,h&&r.setAttribute("nonce",h),document.head.appendChild(r),s)return new Promise((i,m)=>{r.addEventListener("load",i),r.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${e}`)))})}))}function d(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return _.then(n=>{for(const t of n||[])t.status==="rejected"&&d(t.reason);return l().catch(d)})},I=()=>o(()=>import("./LoginPage-N6sdjwkY.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),S=()=>o(()=>import("./RegisterPage-Bypz6ilN.js"),__vite__mapDeps([16,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,26]),import.meta.url),C=()=>o(()=>import("./ResetPasswordPage-Znm7wIOo.js"),__vite__mapDeps([27,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,28]),import.meta.url),$=()=>o(()=>import("./SocialBindCallbackPage-BXLD-LiQ.js"),__vite__mapDeps([29,3,1,4,17,18,30,31,11,7,8,32,12,13,33]),import.meta.url),E=()=>o(()=>import("./VerifyResultPage-Du3cLyZ2.js"),__vite__mapDeps([34,3,1,4,17,18,20,9,21,12,13,35]),import.meta.url),B=()=>o(()=>import("./AppLayout-8mkxrTVV.js"),__vite__mapDeps([36,3,1,4,37,19,20,9,21,22,7,8,6,23,24,38,5,10,39,40,30,31,11,32,2,12,13,14,25,41]),import.meta.url),N=()=>o(()=>import("./AccountsPage-DZM5eF8A.js"),__vite__mapDeps([42,3,1,4,5,6,7,8,9,10,19,20,21,22,23,24,43,37,38,39,40,44,30,31,45,46,17,18,32,47,12,13,48]),import.meta.url),j=()=>o(()=>import("./SchedulesPage-vAAprGPM.js"),__vite__mapDeps([49,3,1,4,38,22,7,8,6,20,9,21,23,5,10,39,19,24,45,46,43,37,40,44,50,51,17,18,30,31,12,13,52]),import.meta.url),q=()=>o(()=>import("./ScreenshotsPage-DrfiqfWk.js"),__vite__mapDeps([53,3,1,4,5,6,7,8,9,10,50,45,38,22,20,21,23,39,46,51,17,18,30,31,12,13,54]),import.meta.url),x=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:I},{path:"/register",name:"register",component:S},{path:"/reset-password/:token",name:"reset_password",component:C},{path:"/social-bind-callback",name:"social_bind_callback",component:$},{path:"/api/verify-email/:token",name:"verify_email",component:E},{path:"/api/verify-bind-email/:token",name:"verify_bind_email",component:E},{path:"/app",component:B,children:[{path:"",redirect:"/app/accounts"},{path:"accounts",name:"accounts",component:N},{path:"schedules",name:"schedules",component:j},{path:"screenshots",name:"screenshots",component:q}]},{path:"/:pathMatch(.*)*",redirect:"/login"}],M=A({history:L(),routes:x});k(O).use(b()).use(M).mount("#app");
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginPage-B-9NNWX9.js","./vendor-vue-Da_zwKNU.js","./SocialLoginButtons-BaFXslgf.js","./base-C_0HtztH.js","./base-CiSqh4F9.css","./el-overlay-ckkTzDcK.js","./aria-DLpFpzDe.js","./http-BDcxFXLM.js","./vendor-axios-B9ygI19o.js","./index-D04QrwME.js","./el-overlay-hkg5a9kt.css","./auth-CuW_jyJD.js","./style-CEbARg1o.js","./style-BHGuKLUF.css","./SocialLoginButtons-qO3SCoE7.css","./LoginPage-udDwyYMW.css","./RegisterPage-Bypz6ilN.js","./el-card-cnxuvbL3.js","./el-card-BqOrgVp1.css","./el-alert-BgJljmz-.js","./el-button-xGNUoXVX.js","./el-button-BRDnKxwT.css","./el-input-nl0Ylqa_.js","./el-input-D6B3r8CH.css","./el-alert-B-NgiIln.css","./password-7ryi82gE.js","./RegisterPage-LYXwWYc1.css","./ResetPasswordPage-Znm7wIOo.js","./ResetPasswordPage-DAB63ins.css","./SocialBindCallbackPage-BXLD-LiQ.js","./el-skeleton-item-cWa5ANvD.js","./el-skeleton-item-BLY1jEuR.css","./settings-C8OWd3zp.js","./SocialBindCallbackPage-BZgzv_7a.css","./VerifyResultPage-Du3cLyZ2.js","./VerifyResultPage-BnGv8vyq.css","./AppLayout-8mkxrTVV.js","./user-DIrCtqzm.js","./el-popper-_4NhtSRX.js","./el-popper-BrfLRiIr.css","./user-B5lTGWdM.css","./AppLayout-C0FaVSZn.css","./AccountsPage-DZM5eF8A.js","./accounts-HALpNswY.js","./accounts-DqlHDq0H.css","./el-select-BADfKG7m.js","./el-select-B0XIb2QK.css","./vendor-realtime-CA1CrNgP.js","./AccountsPage-DKewJ7S7.css","./SchedulesPage-vAAprGPM.js","./el-pagination-D16TMO1B.js","./el-pagination-B1FwbX1n.css","./SchedulesPage-Dxq2ghmQ.css","./ScreenshotsPage-DrfiqfWk.js","./ScreenshotsPage-BhLfAzHf.css"])))=>i.map(i=>d[i]);
|
||||
import{_ as v}from"./style-CEbARg1o.js";import{r as g,c as R,o as y,a as A,b as L,d as k,e as b}from"./vendor-vue-Da_zwKNU.js";const w={};function V(p,l){const a=g("RouterView");return y(),R(a)}const O=v(w,[["render",V]]),T="modulepreload",D=function(p,l){return new URL(p,l).href},f={},o=function(l,a,u){let _=Promise.resolve();if(a&&a.length>0){let P=function(e){return Promise.all(e.map(s=>Promise.resolve(s).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),h=t?.nonce||t?.getAttribute("nonce");_=P(a.map(e=>{if(e=D(e,u),e in f)return;f[e]=!0;const s=e.endsWith(".css"),c=s?'[rel="stylesheet"]':"";if(u)for(let i=n.length-1;i>=0;i--){const m=n[i];if(m.href===e&&(!s||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${c}`))return;const r=document.createElement("link");if(r.rel=s?"stylesheet":T,s||(r.as="script"),r.crossOrigin="",r.href=e,h&&r.setAttribute("nonce",h),document.head.appendChild(r),s)return new Promise((i,m)=>{r.addEventListener("load",i),r.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${e}`)))})}))}function d(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return _.then(n=>{for(const t of n||[])t.status==="rejected"&&d(t.reason);return l().catch(d)})},I=()=>o(()=>import("./LoginPage-B-9NNWX9.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),S=()=>o(()=>import("./RegisterPage-Bypz6ilN.js"),__vite__mapDeps([16,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,26]),import.meta.url),C=()=>o(()=>import("./ResetPasswordPage-Znm7wIOo.js"),__vite__mapDeps([27,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,28]),import.meta.url),$=()=>o(()=>import("./SocialBindCallbackPage-BXLD-LiQ.js"),__vite__mapDeps([29,3,1,4,17,18,30,31,11,7,8,32,12,13,33]),import.meta.url),E=()=>o(()=>import("./VerifyResultPage-Du3cLyZ2.js"),__vite__mapDeps([34,3,1,4,17,18,20,9,21,12,13,35]),import.meta.url),B=()=>o(()=>import("./AppLayout-8mkxrTVV.js"),__vite__mapDeps([36,3,1,4,37,19,20,9,21,22,7,8,6,23,24,38,5,10,39,40,30,31,11,32,2,12,13,14,25,41]),import.meta.url),N=()=>o(()=>import("./AccountsPage-DZM5eF8A.js"),__vite__mapDeps([42,3,1,4,5,6,7,8,9,10,19,20,21,22,23,24,43,37,38,39,40,44,30,31,45,46,17,18,32,47,12,13,48]),import.meta.url),j=()=>o(()=>import("./SchedulesPage-vAAprGPM.js"),__vite__mapDeps([49,3,1,4,38,22,7,8,6,20,9,21,23,5,10,39,19,24,45,46,43,37,40,44,50,51,17,18,30,31,12,13,52]),import.meta.url),q=()=>o(()=>import("./ScreenshotsPage-DrfiqfWk.js"),__vite__mapDeps([53,3,1,4,5,6,7,8,9,10,50,45,38,22,20,21,23,39,46,51,17,18,30,31,12,13,54]),import.meta.url),x=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:I},{path:"/register",name:"register",component:S},{path:"/reset-password/:token",name:"reset_password",component:C},{path:"/social-bind-callback",name:"social_bind_callback",component:$},{path:"/api/verify-email/:token",name:"verify_email",component:E},{path:"/api/verify-bind-email/:token",name:"verify_bind_email",component:E},{path:"/app",component:B,children:[{path:"",redirect:"/app/accounts"},{path:"accounts",name:"accounts",component:N},{path:"schedules",name:"schedules",component:j},{path:"screenshots",name:"screenshots",component:q}]},{path:"/:pathMatch(.*)*",redirect:"/login"}],M=A({history:L(),routes:x});k(O).use(b()).use(M).mount("#app");
|
||||
@@ -1 +1 @@
|
||||
import"./style-CEbARg1o.js";import{d as o}from"./vendor-vue-Da_zwKNU.js";import p from"./LoginPage-N6sdjwkY.js";import"./SocialLoginButtons-BaFXslgf.js";import"./base-C_0HtztH.js";import"./el-overlay-ckkTzDcK.js";import"./aria-DLpFpzDe.js";import"./http-BDcxFXLM.js";import"./vendor-axios-B9ygI19o.js";import"./index-D04QrwME.js";import"./auth-CuW_jyJD.js";o(p).mount("#app");
|
||||
import"./style-CEbARg1o.js";import{d as o}from"./vendor-vue-Da_zwKNU.js";import p from"./LoginPage-B-9NNWX9.js";import"./SocialLoginButtons-BaFXslgf.js";import"./base-C_0HtztH.js";import"./el-overlay-ckkTzDcK.js";import"./aria-DLpFpzDe.js";import"./http-BDcxFXLM.js";import"./vendor-axios-B9ygI19o.js";import"./index-D04QrwME.js";import"./auth-CuW_jyJD.js";o(p).mount("#app");
|
||||
@@ -1,16 +1,17 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||
<title>知识管理平台</title>
|
||||
<script type="module" crossorigin src="./assets/app-D7SWy-KG.js"></script>
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||
<title>知识管理平台</title>
|
||||
<script type="module" crossorigin src="./assets/app-BV_xMlg4.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-Da_zwKNU.js">
|
||||
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
|
||||
</head>
|
||||
<body>
|
||||
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
||||
<div id="app"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||
<title>知识管理平台</title>
|
||||
<script type="module" crossorigin src="./assets/login-C88J0b5r.js"></script>
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||
<title>知识管理平台</title>
|
||||
<script type="module" crossorigin src="./assets/login-D0qy0-VA.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-Da_zwKNU.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/base-C_0HtztH.js">
|
||||
@@ -15,15 +15,15 @@
|
||||
<link rel="modulepreload" crossorigin href="./assets/el-overlay-ckkTzDcK.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/auth-CuW_jyJD.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/SocialLoginButtons-BaFXslgf.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/LoginPage-N6sdjwkY.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/LoginPage-B-9NNWX9.js">
|
||||
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
|
||||
<link rel="stylesheet" crossorigin href="./assets/base-CiSqh4F9.css">
|
||||
<link rel="stylesheet" crossorigin href="./assets/el-overlay-hkg5a9kt.css">
|
||||
<link rel="stylesheet" crossorigin href="./assets/SocialLoginButtons-qO3SCoE7.css">
|
||||
<link rel="stylesheet" crossorigin href="./assets/LoginPage-CSaMrhQm.css">
|
||||
</head>
|
||||
<body>
|
||||
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
<link rel="stylesheet" crossorigin href="./assets/LoginPage-udDwyYMW.css">
|
||||
</head>
|
||||
<body>
|
||||
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
||||
<div id="app"></div>
|
||||
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user