feat: implement authentication flow with login, registration, and OAuth support

This commit is contained in:
JSC
2025-07-26 18:37:47 +02:00
parent 12cb39503b
commit 57429f9414
11 changed files with 924 additions and 1 deletions

View File

@@ -1,9 +1,49 @@
import { Routes, Route, Navigate } from 'react-router'
import { ThemeProvider } from './components/ThemeProvider'
import { AuthProvider, useAuth } from './contexts/AuthContext'
import { LoginPage } from './pages/LoginPage'
import { RegisterPage } from './pages/RegisterPage'
import { AuthCallbackPage } from './pages/AuthCallbackPage'
import { DashboardPage } from './pages/DashboardPage'
function ProtectedRoute({ children }: { children: React.ReactNode }) {
const { user, loading } = useAuth()
if (loading) {
return <div className="min-h-screen flex items-center justify-center">Loading...</div>
}
if (!user) {
return <Navigate to="/login" replace />
}
return <>{children}</>
}
function AppRoutes() {
const { user } = useAuth()
return (
<Routes>
<Route path="/login" element={user ? <Navigate to="/" replace /> : <LoginPage />} />
<Route path="/register" element={user ? <Navigate to="/" replace /> : <RegisterPage />} />
<Route path="/auth/callback" element={<AuthCallbackPage />} />
<Route path="/" element={
<ProtectedRoute>
<DashboardPage />
</ProtectedRoute>
} />
</Routes>
)
}
function App() {
return (
<ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
<div>App</div>
<AuthProvider>
<AppRoutes />
</AuthProvider>
</ThemeProvider>
)
}