mirror of
https://github.com/ershisan99/flashcards-example-project.git
synced 2025-12-16 12:33:18 +00:00
52 lines
981 B
TypeScript
52 lines
981 B
TypeScript
import {
|
|
Navigate,
|
|
Outlet,
|
|
RouteObject,
|
|
RouterProvider,
|
|
createBrowserRouter,
|
|
} from 'react-router-dom'
|
|
|
|
import { DecksPage, SignInPage } from './pages'
|
|
import { DeckPage } from '@/pages/deck-page/deck-page'
|
|
|
|
const publicRoutes: RouteObject[] = [
|
|
{
|
|
children: [
|
|
{
|
|
element: <SignInPage />,
|
|
path: '/login',
|
|
},
|
|
],
|
|
element: <Outlet />,
|
|
},
|
|
]
|
|
|
|
const privateRoutes: RouteObject[] = [
|
|
{
|
|
element: <DecksPage />,
|
|
path: '/',
|
|
},
|
|
{
|
|
element: <DeckPage />,
|
|
path: '/decks/:deckId',
|
|
},
|
|
]
|
|
|
|
const router = createBrowserRouter([
|
|
{
|
|
children: privateRoutes,
|
|
element: <PrivateRoutes />,
|
|
},
|
|
...publicRoutes,
|
|
])
|
|
|
|
export const Router = () => {
|
|
return <RouterProvider router={router} />
|
|
}
|
|
|
|
function PrivateRoutes() {
|
|
const isAuthenticated = true
|
|
|
|
return isAuthenticated ? <Outlet /> : <Navigate to={'/login'} />
|
|
}
|