fix(auth): RequireAuth must use Outlet not children — React Router v6 requires Route guards to be Route elements
Some checks failed
app-ci-deploy / test-build-deploy (push) Has been cancelled

This commit is contained in:
CC Worker 2026-06-01 02:45:20 +00:00
parent 143fff6414
commit 8fe8edb341

View File

@ -66,7 +66,7 @@ const FullContextRoutes: React.FC = () => {
return <Outlet />; return <Outlet />;
}; };
const RequireAuth: React.FC<{ children: React.ReactNode }> = ({ children }) => { const RequireAuth: React.FC = () => {
const { user, isAuthResolving } = useAuth(); const { user, isAuthResolving } = useAuth();
if (isAuthResolving) { if (isAuthResolving) {
@ -88,7 +88,7 @@ const RequireAuth: React.FC<{ children: React.ReactNode }> = ({ children }) => {
return <Navigate to="/login" replace />; return <Navigate to="/login" replace />;
} }
return <>{children}</>; return <Outlet />;
}; };
const AppRoutes: React.FC = () => { const AppRoutes: React.FC = () => {
@ -159,7 +159,7 @@ const AppRoutes: React.FC = () => {
/> />
{/* Authentication only routes - only render if all contexts are initialized */} {/* Authentication only routes - only render if all contexts are initialized */}
<RequireAuth> <Route element={<RequireAuth />}>
<Route element={<FullContextRoutes />}> <Route element={<FullContextRoutes />}>
{/* Timetable Module Routes */} {/* Timetable Module Routes */}
<Route path="/timetable" element={<TimetablePage />} /> <Route path="/timetable" element={<TimetablePage />} />
@ -190,7 +190,7 @@ const AppRoutes: React.FC = () => {
<Route path="/calendar" element={<CalendarPage />} /> <Route path="/calendar" element={<CalendarPage />} />
<Route path="/settings" element={<SettingsPage />} /> <Route path="/settings" element={<SettingsPage />} />
</Route> </Route>
</RequireAuth> </Route>
{/* Fallback route - authenticated users go to dashboard, unauthenticated see public 404 */} {/* Fallback route - authenticated users go to dashboard, unauthenticated see public 404 */}
<Route path="*" element={user ? <Navigate to="/dashboard" replace /> : <NotFoundPublic />} /> <Route path="*" element={user ? <Navigate to="/dashboard" replace /> : <NotFoundPublic />} />