import React from 'react' import { Navigate, useLocation } from 'react-router-dom' import { useAuth } from '../contexts/AuthContext' import { useTranslation } from '../i18n' interface ProtectedRouteProps { children: React.ReactNode /** 可指定的最小角色。admin = 超级管理员 */ requiredRole?: string } /** * 路由守卫组件 * * - 正在验证 token 时,显示加载中状态 * - 未认证时,重定向到 /login 并携带来源路径 * - 已认证时,检查 requiredRole 角色匹配,不匹配则重定向到首页 * - 已认证时,正常渲染子组件 */ export default function ProtectedRoute({ children, requiredRole }: ProtectedRouteProps) { const { t } = useTranslation() const { isAuthenticated, isLoading, user } = useAuth() const location = useLocation() if (isLoading) { return (