fix infinite redirect
This commit is contained in:
@@ -1,38 +1,38 @@
|
||||
import { Routes, Route, Navigate } from 'react-router-dom';
|
||||
import { AuthProvider } from './contexts/AuthContext';
|
||||
import { TimerProvider } from './contexts/TimerContext';
|
||||
import { Layout } from './components/Layout';
|
||||
import { ProtectedRoute } from './components/ProtectedRoute';
|
||||
import { LoginPage } from './pages/LoginPage';
|
||||
import { AuthCallbackPage } from './pages/AuthCallbackPage';
|
||||
import { DashboardPage } from './pages/DashboardPage';
|
||||
import { TimeEntriesPage } from './pages/TimeEntriesPage';
|
||||
import { ClientsPage } from './pages/ClientsPage';
|
||||
import { ProjectsPage } from './pages/ProjectsPage';
|
||||
import { Routes, Route, Navigate } from "react-router-dom";
|
||||
import { AuthProvider } from "./contexts/AuthContext";
|
||||
import { TimerProvider } from "./contexts/TimerContext";
|
||||
import { Layout } from "./components/Layout";
|
||||
import { ProtectedRoute } from "./components/ProtectedRoute";
|
||||
import { LoginPage } from "./pages/LoginPage";
|
||||
import { AuthCallbackPage } from "./pages/AuthCallbackPage";
|
||||
import { DashboardPage } from "./pages/DashboardPage";
|
||||
import { TimeEntriesPage } from "./pages/TimeEntriesPage";
|
||||
import { ClientsPage } from "./pages/ClientsPage";
|
||||
import { ProjectsPage } from "./pages/ProjectsPage";
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<AuthProvider>
|
||||
<TimerProvider>
|
||||
<Routes>
|
||||
<Route path="/login" element={<LoginPage />} />
|
||||
<Route path="/auth/callback" element={<AuthCallbackPage />} />
|
||||
<Route
|
||||
path="/"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Routes>
|
||||
<Route path="/login" element={<LoginPage />} />
|
||||
<Route path="/auth/callback" element={<AuthCallbackPage />} />
|
||||
<Route
|
||||
path="/"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<TimerProvider>
|
||||
<Layout />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
>
|
||||
<Route index element={<Navigate to="/dashboard" replace />} />
|
||||
<Route path="dashboard" element={<DashboardPage />} />
|
||||
<Route path="time-entries" element={<TimeEntriesPage />} />
|
||||
<Route path="clients" element={<ClientsPage />} />
|
||||
<Route path="projects" element={<ProjectsPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
</TimerProvider>
|
||||
</TimerProvider>
|
||||
</ProtectedRoute>
|
||||
}
|
||||
>
|
||||
<Route index element={<Navigate to="/dashboard" replace />} />
|
||||
<Route path="dashboard" element={<DashboardPage />} />
|
||||
<Route path="time-entries" element={<TimeEntriesPage />} />
|
||||
<Route path="clients" element={<ClientsPage />} />
|
||||
<Route path="projects" element={<ProjectsPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
</AuthProvider>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import axios, { AxiosError } from 'axios';
|
||||
import axios, { AxiosError } from "axios";
|
||||
|
||||
const apiClient = axios.create({
|
||||
baseURL: '/api',
|
||||
baseURL: "/api",
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
withCredentials: true,
|
||||
});
|
||||
@@ -12,15 +12,12 @@ const apiClient = axios.create({
|
||||
apiClient.interceptors.response.use(
|
||||
(response) => response,
|
||||
(error: AxiosError<{ error?: string; details?: unknown }>) => {
|
||||
if (error.response?.status === 401) {
|
||||
// Redirect to login on 401
|
||||
window.location.href = '/login';
|
||||
return Promise.reject(error);
|
||||
}
|
||||
|
||||
const message = error.response?.data?.error || error.message || 'An error occurred';
|
||||
// Let components handle authentication redirects via ProtectedRoute
|
||||
// Don't automatically redirect on 401 to avoid infinite loops
|
||||
const message =
|
||||
error.response?.data?.error || error.message || "An error occurred";
|
||||
return Promise.reject(new Error(message));
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
export default apiClient;
|
||||
Reference in New Issue
Block a user