From cf8f7cf96960426bd048ba49d10a6811c6f4d7ef Mon Sep 17 00:00:00 2001 From: kkfluous Date: Tue, 14 Apr 2026 22:40:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(demo):=20=E6=BC=94=E7=A4=BA=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E8=84=B1=E6=95=8F=20+=20=E4=B8=B4=E6=97=B6=E8=B7=B3?= =?UTF-8?q?=E8=BF=87=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 Blur 组件与 DemoModeProvider,全局包裹 Shell - 资产/里程模块的客户名、业务经理、车牌、VIN 等敏感字段使用 包裹 - 前端 AuthProvider 无 jumpToken 时放行 - 后端 authMiddleware 开头直接 next(),跳过所有认证 仅用于演示分支,勿合并至 main。 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/auth/AuthProvider.tsx | 3 +- src/components/Blur.tsx | 17 +++++++++++ src/components/Shell.tsx | 3 ++ src/modules/assets/AssetsModule.tsx | 41 +++++++++++++------------- src/modules/mileage/MonitoringView.tsx | 9 +++--- src/modules/mileage/StatisticsView.tsx | 5 ++-- src/server/auth/middleware.ts | 3 ++ 7 files changed, 54 insertions(+), 27 deletions(-) create mode 100644 src/components/Blur.tsx diff --git a/src/auth/AuthProvider.tsx b/src/auth/AuthProvider.tsx index 1603552..e0cf760 100644 --- a/src/auth/AuthProvider.tsx +++ b/src/auth/AuthProvider.tsx @@ -65,7 +65,8 @@ export default function AuthProvider({ children }: { children: ReactNode }) { const jumpToken = params.get('jumpToken'); if (!jumpToken) { - setState({ isLoading: false, isAuthenticated: false, user: null, error: '未提供跳转令牌' }); + // 临时:无 token 时直接放行 + setState({ isLoading: false, isAuthenticated: true, user: null, error: null }); return; } diff --git a/src/components/Blur.tsx b/src/components/Blur.tsx new file mode 100644 index 0000000..bc3d2cc --- /dev/null +++ b/src/components/Blur.tsx @@ -0,0 +1,17 @@ +import { createContext, useContext, type ReactNode } from 'react'; + +const DemoModeContext = createContext(false); + +export function DemoModeProvider({ enabled, children }: { enabled: boolean; children: ReactNode }) { + return {children}; +} + +export function useDemoMode() { + return useContext(DemoModeContext); +} + +export default function Blur({ children }: { children: ReactNode }) { + const demo = useContext(DemoModeContext); + if (!demo) return <>{children}; + return {children}; +} diff --git a/src/components/Shell.tsx b/src/components/Shell.tsx index b94d355..74b8c29 100644 --- a/src/components/Shell.tsx +++ b/src/components/Shell.tsx @@ -1,5 +1,6 @@ import { useState, useEffect, useMemo, type ComponentType } from 'react'; import { useAuth } from '../auth/useAuth'; +import { DemoModeProvider } from './Blur'; export interface ModuleConfig { id: string; @@ -64,6 +65,7 @@ export function Shell({ modules }: { modules: ModuleConfig[] }) { }, [user]); return ( +
{/* 全局水印 */}
@@ -117,5 +119,6 @@ export function Shell({ modules }: { modules: ModuleConfig[] }) { })}
+ ); } diff --git a/src/modules/assets/AssetsModule.tsx b/src/modules/assets/AssetsModule.tsx index 48c38cb..a8363b6 100644 --- a/src/modules/assets/AssetsModule.tsx +++ b/src/modules/assets/AssetsModule.tsx @@ -34,6 +34,7 @@ import { fetchSummary, fetchByType, fetchVehicleList, fetchWeeklyDetail, fetchDe import type { WeeklyDetailItem } from './api'; import { SearchSelect } from '../../components/SearchSelect'; import { MultiSearchSelect } from '../../components/MultiSearchSelect'; +import Blur from '../../components/Blur'; // --- Constants --- @@ -1488,7 +1489,7 @@ export default function AssetsModule() { >
{isManagerExpanded ? : } - {m.manager} + {m.manager}