File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import LoginPage from "../pages/LoginPage";
66import ProtectedRoute from "../components/ProtectedRoute" ;
77import DashBoard from "../pages/DashBoard" ;
88import SignupPage from "../pages/SignupPage" ;
9+ import RedirectIfLoggedIn from "../components/RedirectIfLoggedIn" ;
910
1011const router = createBrowserRouter ( [
1112 {
@@ -14,17 +15,27 @@ const router = createBrowserRouter([
1415 children : [
1516 {
1617 index : true ,
18+ element : < HomePage /> , // public
19+ } ,
20+
21+ {
22+ path : "login" ,
1723 element : (
18- < ProtectedRoute >
19- < HomePage />
20- </ ProtectedRoute >
24+ < RedirectIfLoggedIn >
25+ < LoginPage />
26+ </ RedirectIfLoggedIn >
2127 ) ,
2228 } ,
29+
2330 {
24- path : "Login" ,
25- element : < LoginPage /> ,
31+ path : "register" ,
32+ element : (
33+ < RedirectIfLoggedIn >
34+ < SignupPage />
35+ </ RedirectIfLoggedIn >
36+ ) ,
2637 } ,
27- { path : "Register" , element : < SignupPage /> } ,
38+
2839 {
2940 path : "dashboard" ,
3041 element : (
Original file line number Diff line number Diff line change 1+ import { Navigate } from "react-router-dom" ;
2+ import { useAuthUser } from "../auth/auth.store" ;
3+ interface ProtectedRouteProps {
4+ children : React . ReactNode ;
5+ }
6+ const RedirectIfLoggedIn : React . FC < ProtectedRouteProps > = ( { children } ) => {
7+ const user = useAuthUser ( ) ;
8+ if ( user ) {
9+ return < Navigate to = "/dashboard" replace /> ;
10+ }
11+
12+ return children ;
13+ } ;
14+
15+ export default RedirectIfLoggedIn ;
Original file line number Diff line number Diff line change @@ -36,7 +36,12 @@ export function LoginForm({
3636 const navigate = useNavigate ( ) ;
3737 const user = useAuthUser ( ) ;
3838 const location = useLocation ( ) ;
39- const fromPath = location . state ?. from ?. pathname || "/" ;
39+ const fromPath =
40+ location . state ?. from ?. pathname &&
41+ location . state ?. from ?. pathname !== "/login"
42+ ? location . state . from . pathname
43+ : "/dashboard" ;
44+
4045 const [ email , setEmail ] = useState ( "" ) ;
4146 const [ password , setPassword ] = useState ( "" ) ;
4247 if ( user ) {
Original file line number Diff line number Diff line change @@ -53,7 +53,7 @@ export function SignupForm({
5353
5454 try {
5555 await register ( { name, email, password } ) ;
56- navigate ( "/" , { replace : true } ) ;
56+ navigate ( "/dashboard " , { replace : true } ) ;
5757 } catch ( err ) {
5858 console . log ( "Registration failed on frontend side." , err ) ;
5959 }
You can’t perform that action at this time.
0 commit comments