4
4
HashRouter as Router ,
5
5
Route ,
6
6
Switch ,
7
+ useLocation ,
7
8
} from 'react-router-dom' ;
8
9
9
10
import { AppContext , AppProvider } from './context/App' ;
@@ -15,24 +16,16 @@ import { NotificationsRoute } from './routes/Notifications';
15
16
import { SettingsRoute } from './routes/Settings' ;
16
17
import { Sidebar } from './components/Sidebar' ;
17
18
18
- export const PrivateRoute = ( { component : Component , ... rest } ) => {
19
+ function RequireAuth ( { children } ) {
19
20
const { isLoggedIn } = useContext ( AppContext ) ;
21
+ const location = useLocation ( ) ;
20
22
21
- return (
22
- < Route
23
- { ...rest }
24
- render = { ( props ) =>
25
- isLoggedIn ? (
26
- < Component { ...props } />
27
- ) : (
28
- < Redirect
29
- to = { { pathname : '/login' , state : { from : props . location } } }
30
- />
31
- )
32
- }
33
- />
23
+ return isLoggedIn ? (
24
+ children
25
+ ) : (
26
+ < Redirect to = { { pathname : '/login' , state : { from : location } } } />
34
27
) ;
35
- } ;
28
+ }
36
29
37
30
export const App = ( ) => {
38
31
return (
@@ -43,11 +36,28 @@ export const App = () => {
43
36
< Sidebar />
44
37
45
38
< Switch >
46
- < PrivateRoute path = "/" exact component = { NotificationsRoute } />
47
- < PrivateRoute path = "/settings" exact component = { SettingsRoute } />
48
- < Route path = "/login" component = { LoginRoute } />
49
- < Route path = "/login-enterprise" component = { LoginEnterpriseRoute } />
50
- < Route path = "/login-token" component = { LoginWithToken } />
39
+ < Route path = "/" exact >
40
+ < RequireAuth >
41
+ < NotificationsRoute />
42
+ </ RequireAuth >
43
+ </ Route >
44
+ < Route path = "/settings" exact >
45
+ < RequireAuth >
46
+ < SettingsRoute />
47
+ </ RequireAuth >
48
+ </ Route >
49
+ < Route path = "/login" >
50
+ < LoginRoute />
51
+ </ Route >
52
+ < Route path = "/login" >
53
+ < LoginRoute />
54
+ </ Route >
55
+ < Route path = "/login-enterprise" >
56
+ < LoginEnterpriseRoute />
57
+ </ Route >
58
+ < Route path = "/login-token" >
59
+ < LoginWithToken />
60
+ </ Route >
51
61
</ Switch >
52
62
</ div >
53
63
</ Router >
0 commit comments