How can I redirect user depending on auth?
I have multiple different routs
App.js
:
import React from 'react'
import AuthContextProvider from './Contexts/AuthContext'
import RootContextProvider from './Contexts/RootContext'
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import Browse from './Routes/Private/Browse/Browse'
import LandingPage from './Routes/LandingPage'
import Login from './Routes/Login'
import ScrollToTop from './ScrollToTop'
import Home from './Routes/Private/Browse/Outlets/Home'
import TVShows from './Routes/Private/Browse/Outlets/TVShows'
import Latest from './Routes/Private/Browse/Outlets/Latest'
import MyList from './Routes/Private/Browse/Outlets/MyList'
import Movies from './Routes/Private/Browse/Outlets/Movies'
import Title from './Routes/Private/Browse/Title'
function App() {
return (
<BrowserRouter>
<AuthContextProvider>
<RootContextProvider>
<Routes>
// Public routes here
<Route path='/' element={<LandingPage />} />
<Route path='/login' element={<Login />} />
// Public routes here // Private routes here
<Route path='/browse' element={<Browse />}>
<Route index element={<Home />} />
<Route path='tv-shows' element={<TVShows />} />
<Route path='movies' element={<Movies />} />
<Route path='latest' element={<Latest />} />
<Route path='my-list' element={<MyList />} />
</Route>
<Route path='movie/:id' element={<Title />} />
<Route path='tv/:id' element={<Title />} />
// Private routes here
</Routes>
<ScrollToTop />
</RootContextProvider>
</AuthContextProvider>
</BrowserRouter>
)
}
export default App
I have Private routes and Public routes, Depending on auth
context I want redirect user to a correct route:
auth === true
- If user hit any of public routes redirect to
/browse
- if user hit
not found route
redirect to/browse
- If user hit any of public routes redirect to
auth === false
- If user hit any of private routes redirect to
/login
- if user hit
not found route
redirect to/
- If user hit any of private routes redirect to
All
private routes
are accessible whenauth === true
and allpublic routes
whenauth === false