File tree Expand file tree Collapse file tree 5 files changed +54
-33
lines changed Expand file tree Collapse file tree 5 files changed +54
-33
lines changed Original file line number Diff line number Diff line change @@ -17,12 +17,15 @@ import AuthenticationPage, {
17
17
action as authAction ,
18
18
} from './pages/Authentication' ;
19
19
import { action as logoutAction } from './pages/Logout' ;
20
+ import { tokenLoader } from './util/auth' ;
20
21
21
22
const router = createBrowserRouter ( [
22
23
{
23
24
path : '/' ,
24
25
element : < RootLayout /> ,
25
26
errorElement : < ErrorPage /> ,
27
+ id : 'root' ,
28
+ loader : tokenLoader ,
26
29
children : [
27
30
{ index : true , element : < HomePage /> } ,
28
31
{
Original file line number Diff line number Diff line change 1
- import { Link , useSubmit } from 'react-router-dom' ;
1
+ import { Link , useRouteLoaderData , useSubmit } from 'react-router-dom' ;
2
2
3
3
import classes from './EventItem.module.css' ;
4
4
5
5
function EventItem ( { event } ) {
6
+ const token = useRouteLoaderData ( 'root' ) ;
7
+
6
8
const submit = useSubmit ( ) ;
7
9
8
10
function startDeleteHandler ( ) {
@@ -19,10 +21,12 @@ function EventItem({ event }) {
19
21
< h1 > { event . title } </ h1 >
20
22
< time > { event . date } </ time >
21
23
< p > { event . description } </ p >
22
- < menu className = { classes . actions } >
23
- < Link to = "edit" > Edit</ Link >
24
- < button onClick = { startDeleteHandler } > Delete</ button >
25
- </ menu >
24
+ { token && (
25
+ < menu className = { classes . actions } >
26
+ < Link to = "edit" > Edit</ Link >
27
+ < button onClick = { startDeleteHandler } > Delete</ button >
28
+ </ menu >
29
+ ) }
26
30
</ article >
27
31
) ;
28
32
}
Original file line number Diff line number Diff line change 1
- import { NavLink } from 'react-router-dom' ;
1
+ import { NavLink , useRouteLoaderData } from 'react-router-dom' ;
2
2
3
3
import classes from './EventsNavigation.module.css' ;
4
4
5
5
function EventsNavigation ( ) {
6
+ const token = useRouteLoaderData ( 'root' ) ;
7
+
6
8
return (
7
9
< header className = { classes . header } >
8
10
< nav >
@@ -18,16 +20,18 @@ function EventsNavigation() {
18
20
All Events
19
21
</ NavLink >
20
22
</ li >
21
- < li >
22
- < NavLink
23
- to = "/events/new"
24
- className = { ( { isActive } ) =>
25
- isActive ? classes . active : undefined
26
- }
27
- >
28
- New Event
29
- </ NavLink >
30
- </ li >
23
+ { token && (
24
+ < li >
25
+ < NavLink
26
+ to = "/events/new"
27
+ className = { ( { isActive } ) =>
28
+ isActive ? classes . active : undefined
29
+ }
30
+ >
31
+ New Event
32
+ </ NavLink >
33
+ </ li >
34
+ ) }
31
35
</ ul >
32
36
</ nav >
33
37
</ header >
Original file line number Diff line number Diff line change 1
- import { Form , NavLink } from 'react-router-dom' ;
1
+ import { Form , NavLink , useRouteLoaderData } from 'react-router-dom' ;
2
2
3
3
import classes from './MainNavigation.module.css' ;
4
4
import NewsletterSignup from './NewsletterSignup' ;
5
5
6
6
function MainNavigation ( ) {
7
+ const token = useRouteLoaderData ( 'root' ) ;
8
+
7
9
return (
8
10
< header className = { classes . header } >
9
11
< nav >
@@ -39,22 +41,26 @@ function MainNavigation() {
39
41
Newsletter
40
42
</ NavLink >
41
43
</ li >
42
- < li >
43
- < NavLink
44
- to = "/auth?mode=login"
45
- className = { ( { isActive } ) =>
46
- isActive ? classes . active : undefined
47
- }
48
- end
49
- >
50
- Authentication
51
- </ NavLink >
52
- </ li >
53
- < li >
54
- < Form action = "/logout" method = "post" >
55
- < button style = { { padding : '0.2rem 0.5rem' } } > Logout</ button >
56
- </ Form >
57
- </ li >
44
+ { ! token && (
45
+ < li >
46
+ < NavLink
47
+ to = "/auth?mode=login"
48
+ className = { ( { isActive } ) =>
49
+ isActive ? classes . active : undefined
50
+ }
51
+ end
52
+ >
53
+ Authentication
54
+ </ NavLink >
55
+ </ li >
56
+ ) }
57
+ { token && (
58
+ < li >
59
+ < Form action = "/logout" method = "post" >
60
+ < button style = { { padding : '0.2rem 0.5rem' } } > Logout</ button >
61
+ </ Form >
62
+ </ li >
63
+ ) }
58
64
</ ul >
59
65
</ nav >
60
66
< NewsletterSignup />
Original file line number Diff line number Diff line change @@ -2,3 +2,7 @@ export function getAuthToken() {
2
2
const token = localStorage . getItem ( 'token' ) ;
3
3
return token ;
4
4
}
5
+
6
+ export function tokenLoader ( ) {
7
+ return getAuthToken ( ) ;
8
+ }
You can’t perform that action at this time.
0 commit comments