技能提交

This commit is contained in:
fengxiangdebaozi committed 2026-06-29 16:59:23 +08:00
1 parent 210cb5117f
commit 6851c96a45
38 files changed
+8043 -1903

No files matched your search

+11 -4
View File
@@ -84,6 +84,7 @@ function writeCachedYUserInfo(yUserId: string, info: Record<string, unknown>): v
function buildExternalUserInfo(
yUserId: string,
result: Record<string, unknown>,
access_token: string | null | undefined,
previous: Record<string, unknown>,
cached: Record<string, unknown>,
): Record<string, unknown> {
@@ -101,6 +102,12 @@ function buildExternalUserInfo(
return next;
}
const queryAccessToken = normalizeExternalAccessToken(access_token);
if (queryAccessToken) {
next.accessToken = queryAccessToken;
return next;
}
const previousYUserId = readStoredYUserId(previous);
const previousAccessToken =
previousYUserId === yUserId ? normalizeExternalAccessToken(previous.accessToken) : "";
@@ -121,6 +128,7 @@ function buildExternalUserInfo(
export async function loginByYUserId(
yUserId: string,
token?: string | null,
access_token?: string | null,
): Promise<void> {
if (token) {
authStorageSet(TOOLS_TOKEN_STORAGE_KEY, token);
@@ -134,12 +142,11 @@ export async function loginByYUserId(
// consumer 返回 { accessToken, gateDepartName, typeName, userName }。
// 一并存入路由参数 yUserId,使「应用管理」里 source=yUserId 的路由参数能取到(与
// source=userName/gateDepartName/typeName 直接取接口值统一走 userInfo[source])。
// 注意:接口也会返回 accessToken,但 XK/PG 及 source=accessToken 要用路由透传的
// access_token,故登录流程随后会用 persistAccessToken 覆盖 userInfo.accessToken。
// 注意:接口返回的 accessToken 优先;登录 URL 的 access_token 只在接口值为空时兜底。
const result = res.data ?? {};
const previous = readExternalUserInfo();
const cached = readCachedYUserInfo(yUserId);
const next = buildExternalUserInfo(yUserId, result, previous, cached);
const next = buildExternalUserInfo(yUserId, result, access_token, previous, cached);
authStorageSet(EXTERNAL_USER_INFO_STORAGE_KEY, JSON.stringify(next));
writeCachedYUserInfo(yUserId, next);
}
@@ -149,7 +156,7 @@ export function persistToolsToken(token: string): void {
}
/**
* 把内网登录路由参数 access_token 合并写入 userInfo.accessToken(覆盖接口返回的同名值)。
* 把内网登录路由参数 access_token 合并写入 userInfo.accessToken。
* 据此拼参的有:XK/PG 中任务 iframe(XK 用 accessToken、PG 用 access_token,二者均读
* external-links.getAccessToken() = userInfo.accessToken);以及「应用管理」里
* source=accessToken 的轻应用路由参数(resolveRouteParamValue 取 userInfo.accessToken)。