1.钉钉修复跳转问题
This commit is contained in:
1 parent
4dac32d89c
commit
c8ec9c4d08
5 files changed
+37
-14
No files matched your search
@@ -5,13 +5,13 @@ import {
|
||||
getWechatPcRedirectUri,
|
||||
isLocalDevOrigin,
|
||||
parseWechatOAuthState,
|
||||
PC_DING_BIND_TICKET_KEY,
|
||||
type WechatPcAction,
|
||||
} from '/@/utils/wechat-pc';
|
||||
|
||||
export const SOCIAL_TYPE_DINGTALK = 'DINGTALK';
|
||||
export { PC_DING_BIND_TICKET_KEY };
|
||||
|
||||
/** 钉钉登录(未绑定)扫码后暂存 ticket,登录页弹窗绑定 */
|
||||
export const PC_DING_BIND_TICKET_KEY = 'pc_ding_bind_ticket';
|
||||
export const SOCIAL_TYPE_DINGTALK = 'DINGTALK';
|
||||
|
||||
export type DingTalkPcAction = 'LOGIN' | 'SETTINGS';
|
||||
|
||||
|
||||
+12
-5
@@ -14,6 +14,8 @@ export const PC_WX_PWD_TICKET_KEY = 'pc_wx_pwd_ticket';
|
||||
export const PC_WX_CONFIRM_TICKET_KEY = 'pc_wx_confirm_ticket';
|
||||
/** 微信登录(未绑定)扫码后暂存 ticket,登录页弹窗绑定 */
|
||||
export const PC_WX_BIND_TICKET_KEY = 'pc_wx_bind_ticket';
|
||||
/** 钉钉登录(未绑定)扫码后暂存 ticket,登录页弹窗绑定(与 dingtalk-pc 共用) */
|
||||
export const PC_DING_BIND_TICKET_KEY = 'pc_ding_bind_ticket';
|
||||
/** 弹窗内扫码登录/确认成功后通知父页面 */
|
||||
export const PC_WX_AUTH_DONE_KEY = 'pc_wx_auth_done';
|
||||
/** 弹窗扫码登录成功后,把 token 写入 localStorage 供父页面接管(Cookie 在弹窗场景下不可靠) */
|
||||
@@ -233,12 +235,17 @@ export function clearWechatGateMarkers() {
|
||||
localStorage.removeItem(PC_WX_TOKEN_PAYLOAD_KEY);
|
||||
}
|
||||
|
||||
/** 是否存在微信/钉钉首次绑定 ticket */
|
||||
export function hasSocialBindTicket(): boolean {
|
||||
return !!(localStorage.getItem(PC_WX_BIND_TICKET_KEY) || localStorage.getItem(PC_DING_BIND_TICKET_KEY));
|
||||
}
|
||||
|
||||
export function notifyWechatAuthError(message: string) {
|
||||
const payload = JSON.stringify({ message, ts: Date.now() });
|
||||
writeStorageKey(PC_WX_AUTH_ERROR_KEY, payload);
|
||||
}
|
||||
|
||||
/** 轮询 token;弹窗关闭、已写入 token 或存在微信绑定 ticket 时回调 */
|
||||
/** 轮询 token;弹窗关闭、已写入 token 或存在微信/钉钉绑定 ticket 时回调 */
|
||||
export function pollWechatAuthDone(
|
||||
win: Window | null,
|
||||
onSuccess: () => void,
|
||||
@@ -271,7 +278,7 @@ export function pollWechatAuthDone(
|
||||
localStorage.removeItem(PC_WX_AUTH_ERROR_KEY);
|
||||
return;
|
||||
}
|
||||
if (localStorage.getItem(PC_WX_BIND_TICKET_KEY)) {
|
||||
if (hasSocialBindTicket()) {
|
||||
window.clearInterval(timer);
|
||||
onSuccess();
|
||||
return;
|
||||
@@ -286,7 +293,7 @@ export function pollWechatAuthDone(
|
||||
if (
|
||||
Cookies.get('token') ||
|
||||
Session.getToken() ||
|
||||
localStorage.getItem(PC_WX_BIND_TICKET_KEY) ||
|
||||
hasSocialBindTicket() ||
|
||||
(localStorage.getItem(PC_WX_AUTH_DONE_KEY) || '') !== authDoneBaseline
|
||||
) {
|
||||
done();
|
||||
@@ -295,7 +302,7 @@ export function pollWechatAuthDone(
|
||||
}
|
||||
if (Date.now() - started > maxMs) {
|
||||
window.clearInterval(timer);
|
||||
onError?.('微信授权超时,请重试');
|
||||
onError?.('授权超时,请重试');
|
||||
}
|
||||
}, 500);
|
||||
return () => window.clearInterval(timer);
|
||||
@@ -314,7 +321,7 @@ export function finishWechatAuthRedirect(hasToken: boolean) {
|
||||
window.close();
|
||||
return;
|
||||
}
|
||||
const needBind = !hasToken && !!localStorage.getItem(PC_WX_BIND_TICKET_KEY);
|
||||
const needBind = !hasToken && hasSocialBindTicket();
|
||||
window.location.href = hasToken ? '/' : needBind ? '/#/login?wxPcBind=1' : '/#/login';
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user