|
@@ -2,7 +2,7 @@ import { useLocation, useNavigate, useRoutes } from "react-router-dom";
|
|
|
import { useState, useEffect } from "react";
|
|
|
import storage from "@/utils/storage";
|
|
|
import LayoutHeader from "@/layouts/Header";
|
|
|
-import { STORAGE_UID } from "@/constants";
|
|
|
+import { FROM_IFRAME, STORAGE_UID } from "@/constants";
|
|
|
|
|
|
const BeforeEnter = ({ routers }) => {
|
|
|
//1.在路由数组中找当前页面路由的对应路由项
|
|
@@ -34,8 +34,13 @@ const BeforeEnter = ({ routers }) => {
|
|
|
|
|
|
// 重定向到登录页
|
|
|
if (!uid && findRoute.path !== "/login") {
|
|
|
- navigate("/login");
|
|
|
- return;
|
|
|
+ // 检查是否是来自 iframe 的导航
|
|
|
+ const fromIframe = storage.getItem(FROM_IFRAME) === "true";
|
|
|
+
|
|
|
+ if (!fromIframe) {
|
|
|
+ navigate("/login");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 已登录但访问登录页
|
|
@@ -68,6 +73,22 @@ const BeforeEnter = ({ routers }) => {
|
|
|
// 如果是登录页或未登录,不显示Header
|
|
|
const showHeader = uid && findRoute?.path !== "/login";
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ // 添加导航监听
|
|
|
+ window.electronAPI.on("navigate", (result) => {
|
|
|
+ const { type, path, state, setIframeFlag } = result;
|
|
|
+ if (type === "navigate") {
|
|
|
+ if (setIframeFlag) {
|
|
|
+ storage.setItem(FROM_IFRAME, "true");
|
|
|
+ }
|
|
|
+ navigate(path, { state }); // 传递 state
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return () => {
|
|
|
+ storage.clearItem(FROM_IFRAME);
|
|
|
+ };
|
|
|
+ }, []);
|
|
|
+
|
|
|
return (
|
|
|
<div className="h-full">
|
|
|
<LayoutHeader isLoginPage={findRoute?.path === "/login"} />
|