Merge branch 'gzy_iframedf' into 'master'

feat: 登录token回传至宿主

See merge request knowledge-base-bj/deerflow-server!102
This commit is contained in:
g zy committed 2026-06-08 04:35:35 +00:00
commit 004853f030
2 files changed
+10582

No files matched your search

+10540
View File
File diff suppressed because it is too large. Load diff
+42
View File
@@ -17,6 +17,7 @@ import {
} from "@/components/workspace/messages";
import { ThreadContext } from "@/components/workspace/messages/context";
import { TodoList } from "@/components/workspace/todo-list";
import { getAccessToken } from "@/core/auth";
import { useI18n } from "@/core/i18n/hooks";
import { useModels } from "@/core/models/hooks";
import { useNotification } from "@/core/notification/hooks";
@@ -33,6 +34,13 @@ import {
} from "./iframe-chat-submit";
type BrainyChatStatus = "started" | "finished";
type BrainyAuthTokenMessage = {
source: "brainy-iframe";
type: "brainy:auth-token";
payload: {
accessToken: string;
};
};
type BrainyChatInterruptMessage = {
source?: string;
type?: string;
@@ -57,6 +65,18 @@ function postBrainyChatStatus(status: BrainyChatStatus, requestId: string) {
);
}
function postBrainyAuthToken(accessToken: string) {
const message: BrainyAuthTokenMessage = {
source: "brainy-iframe",
type: "brainy:auth-token",
payload: {
accessToken,
},
};
window.parent?.postMessage(message, "*");
}
export default function IframeChatPage() {
const routeBase = useRouteBase();
const router = useRouter();
@@ -79,6 +99,28 @@ export default function IframeChatPage() {
setMounted(true);
}, []);
useEffect(() => {
let lastToken: string | undefined;
const emitAccessToken = () => {
const accessToken = getAccessToken();
if (!accessToken || accessToken === lastToken) {
return;
}
lastToken = accessToken;
postBrainyAuthToken(accessToken);
};
emitAccessToken();
window.addEventListener("focus", emitAccessToken);
window.addEventListener("storage", emitAccessToken);
return () => {
window.removeEventListener("focus", emitAccessToken);
window.removeEventListener("storage", emitAccessToken);
};
}, []);
useEffect(() => {
if (isNewThread) {
setHasStartedConversation(false);