Skip to main content

Protected Route

ProtectedRoute Component

The ProtectedRoute component is a wrapper component designed for authenticated routes. It ensures that only logged-in users can access certain routes within the application.

Usage

To use the ProtectedRoute component, simply wrap the routes that require authentication within it. Here's an example of how you can integrate it into your routing setup:

import { memo } from "react";
import { Navigate, Route, Routes } from "react-router-dom";
import { ProtectedRoute } from "../layout/ProtectedRoute";
import { Login } from "../views/auth/Login";
import { OAuthCallback } from "../views/auth/OAuthCallback";
import { Home } from "../views/home/Home";
import ProjectList from "../views/project/ProjectList";

export const AppRoutes = memo(() => (
<Routes>
<Route path="/" element={<Navigate to="/auth/login" />} />
<Route path="/auth/login" element={<Login />} />
<Route path="/oauth/callback" element={<OAuthCallback />} />
<Route element={<ProtectedRoute />}>
<Route path="/home" element={<Home />} />
<Route path="/project" element={<ProjectList />} />
</Route>
</Routes>
));

Props

The ProtectedRoute component accepts the following props:

  • children: ReactNode - The content to be rendered within the protected route.

Behavior

  • If user is authenticated, the ProtectedRoute component renders its children normally.
  • If user is not authenticated, the component redirects to login page specified by to prop of Navigate component.

Notes

  • Ensure that the ProtectedRoute component is placed appropriately within your route hierarchy to protect the desired routes.
  • Customize the redirect behavior by adjusting the to prop of the Navigate component within the ProtectedRoute component.
  • Make sure to handle cases where the user's authentication status changes dynamically within the application.