增加获取用户 ID 的功能,Agent chat 请求头新增传递 userId
This commit is contained in:
@@ -49,3 +49,30 @@ export const getAccessToken = async () => {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getUserId = async () => {
|
||||||
|
const session = await getSession();
|
||||||
|
const sessionUserId = typeof session?.user?.id === "string" ? session.user.id : null;
|
||||||
|
if (sessionUserId) {
|
||||||
|
return sessionUserId;
|
||||||
|
}
|
||||||
|
|
||||||
|
const accessToken = await getAccessToken();
|
||||||
|
if (!accessToken) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const payload = decodeJwtPayload(accessToken);
|
||||||
|
if (!payload || typeof payload !== "object") {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const candidate =
|
||||||
|
typeof payload.sub === "string"
|
||||||
|
? payload.sub
|
||||||
|
: typeof payload.user_id === "string"
|
||||||
|
? payload.user_id
|
||||||
|
: null;
|
||||||
|
|
||||||
|
return candidate;
|
||||||
|
};
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ export const streamAgentChat = async ({
|
|||||||
session_id: sessionId,
|
session_id: sessionId,
|
||||||
}),
|
}),
|
||||||
projectHeaderMode: "include",
|
projectHeaderMode: "include",
|
||||||
|
userHeaderMode: "include",
|
||||||
skipAuthRedirect: true,
|
skipAuthRedirect: true,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@@ -229,6 +230,7 @@ export const abortAgentChat = async (sessionId?: string) => {
|
|||||||
session_id: sessionId,
|
session_id: sessionId,
|
||||||
}),
|
}),
|
||||||
projectHeaderMode: "include",
|
projectHeaderMode: "include",
|
||||||
|
userHeaderMode: "include",
|
||||||
skipAuthRedirect: true,
|
skipAuthRedirect: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -249,6 +251,7 @@ export const forkAgentChat = async (sessionId: string | undefined, keepMessageCo
|
|||||||
keep_message_count: keepMessageCount,
|
keep_message_count: keepMessageCount,
|
||||||
}),
|
}),
|
||||||
projectHeaderMode: "include",
|
projectHeaderMode: "include",
|
||||||
|
userHeaderMode: "include",
|
||||||
skipAuthRedirect: true,
|
skipAuthRedirect: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
import { getAccessToken } from "@/lib/authToken";
|
import { getAccessToken, getUserId } from "@/lib/authToken";
|
||||||
import { useProjectStore } from "@/store/projectStore";
|
import { useProjectStore } from "@/store/projectStore";
|
||||||
|
|
||||||
export type AuthHeaderMode = "include" | "omit";
|
export type AuthHeaderMode = "include" | "omit";
|
||||||
export type ProjectHeaderMode = "auto" | "include" | "omit";
|
export type ProjectHeaderMode = "auto" | "include" | "omit";
|
||||||
|
export type UserHeaderMode = "include" | "omit";
|
||||||
|
|
||||||
export interface AuthContextHeaderOptions {
|
export interface AuthContextHeaderOptions {
|
||||||
authHeaderMode?: AuthHeaderMode;
|
authHeaderMode?: AuthHeaderMode;
|
||||||
projectHeaderMode?: ProjectHeaderMode;
|
projectHeaderMode?: ProjectHeaderMode;
|
||||||
|
userHeaderMode?: UserHeaderMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
const shouldIncludeProjectHeader = (
|
const shouldIncludeProjectHeader = (
|
||||||
@@ -34,6 +36,13 @@ export const applyAuthContextHeaders = async (
|
|||||||
headers.set("Authorization", `Bearer ${accessToken}`);
|
headers.set("Authorization", `Bearer ${accessToken}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.userHeaderMode === "include") {
|
||||||
|
const userId = await getUserId();
|
||||||
|
if (userId) {
|
||||||
|
headers.set("X-User-Id", userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const projectId = useProjectStore.getState().currentProjectId;
|
const projectId = useProjectStore.getState().currentProjectId;
|
||||||
if (
|
if (
|
||||||
projectId &&
|
projectId &&
|
||||||
|
|||||||
Reference in New Issue
Block a user