Skip to content

Commit b7a8e54

Browse files
committed
Updating the UI Based on Auth Status
1 parent 2586e7e commit b7a8e54

File tree

5 files changed

+54
-33
lines changed

5 files changed

+54
-33
lines changed

frontend/src/App.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,15 @@ import AuthenticationPage, {
1717
action as authAction,
1818
} from './pages/Authentication';
1919
import { action as logoutAction } from './pages/Logout';
20+
import { tokenLoader } from './util/auth';
2021

2122
const router = createBrowserRouter([
2223
{
2324
path: '/',
2425
element: <RootLayout />,
2526
errorElement: <ErrorPage />,
27+
id: 'root',
28+
loader: tokenLoader,
2629
children: [
2730
{ index: true, element: <HomePage /> },
2831
{

frontend/src/components/EventItem.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import { Link, useSubmit } from 'react-router-dom';
1+
import { Link, useRouteLoaderData, useSubmit } from 'react-router-dom';
22

33
import classes from './EventItem.module.css';
44

55
function EventItem({ event }) {
6+
const token = useRouteLoaderData('root');
7+
68
const submit = useSubmit();
79

810
function startDeleteHandler() {
@@ -19,10 +21,12 @@ function EventItem({ event }) {
1921
<h1>{event.title}</h1>
2022
<time>{event.date}</time>
2123
<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+
)}
2630
</article>
2731
);
2832
}

frontend/src/components/EventsNavigation.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import { NavLink } from 'react-router-dom';
1+
import { NavLink, useRouteLoaderData } from 'react-router-dom';
22

33
import classes from './EventsNavigation.module.css';
44

55
function EventsNavigation() {
6+
const token = useRouteLoaderData('root');
7+
68
return (
79
<header className={classes.header}>
810
<nav>
@@ -18,16 +20,18 @@ function EventsNavigation() {
1820
All Events
1921
</NavLink>
2022
</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+
)}
3135
</ul>
3236
</nav>
3337
</header>

frontend/src/components/MainNavigation.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
import { Form, NavLink } from 'react-router-dom';
1+
import { Form, NavLink, useRouteLoaderData } from 'react-router-dom';
22

33
import classes from './MainNavigation.module.css';
44
import NewsletterSignup from './NewsletterSignup';
55

66
function MainNavigation() {
7+
const token = useRouteLoaderData('root');
8+
79
return (
810
<header className={classes.header}>
911
<nav>
@@ -39,22 +41,26 @@ function MainNavigation() {
3941
Newsletter
4042
</NavLink>
4143
</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+
)}
5864
</ul>
5965
</nav>
6066
<NewsletterSignup />

frontend/src/util/auth.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ export function getAuthToken() {
22
const token = localStorage.getItem('token');
33
return token;
44
}
5+
6+
export function tokenLoader() {
7+
return getAuthToken();
8+
}

0 commit comments

Comments
 (0)