Implement public/private routing
This commit is contained in:
@@ -2,10 +2,9 @@ import React from 'react';
|
||||
import { Helmet } from 'react-helmet';
|
||||
|
||||
export default function TitleComponent({ title }) {
|
||||
var defaultTitle = 'Meeting Planner';
|
||||
return (
|
||||
<Helmet>
|
||||
<title>{title ? `${title} | Meeting Planner` : defaultTitle}</title>
|
||||
<title>{title ? `${title} | Meeting Planner` : 'Meeting Planner'}</title>
|
||||
</Helmet>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -16,13 +16,11 @@ export default function NavBar({ title }) {
|
||||
alignItems: 'center',
|
||||
}}
|
||||
>
|
||||
{/* This hidden nav is a hack to have the title perfectly centered. */}
|
||||
<Nav style={{ visibility: 'hidden' }}>
|
||||
{/* This hidden nav is a hack to have the title perfectly centered. */}
|
||||
<MenuDropdown />
|
||||
</Nav>
|
||||
<div>
|
||||
<h3>{title}</h3>
|
||||
</div>
|
||||
<MenuDropdown />
|
||||
</Navbar.Body>
|
||||
</Navbar>
|
||||
|
||||
29
src/components/routes/PrivateRoute.js
Normal file
29
src/components/routes/PrivateRoute.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import React from 'react';
|
||||
import { Route, Redirect } from 'react-router-dom';
|
||||
import { getToken } from '../../utils/common';
|
||||
|
||||
const isLoggedIn = getToken();
|
||||
|
||||
const PrivateRoute = ({ component: Component, user, ...rest }) => {
|
||||
return (
|
||||
<Route
|
||||
{...rest}
|
||||
render={(props) =>
|
||||
isLoggedIn ? (
|
||||
<Component {...rest} {...props} />
|
||||
) : (
|
||||
<Redirect
|
||||
to={{
|
||||
pathname: '/login',
|
||||
state: {
|
||||
from: props.location,
|
||||
},
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default PrivateRoute;
|
||||
22
src/components/routes/PublicRoute.js
Normal file
22
src/components/routes/PublicRoute.js
Normal file
@@ -0,0 +1,22 @@
|
||||
import React from 'react';
|
||||
import { Route, Redirect } from 'react-router-dom';
|
||||
import { getToken } from '../../utils/common';
|
||||
|
||||
const isLoggedIn = getToken();
|
||||
|
||||
function PublicRoute({ component: Component, ...rest }) {
|
||||
return (
|
||||
<Route
|
||||
{...rest}
|
||||
render={(props) =>
|
||||
!isLoggedIn ? (
|
||||
<Component {...props} />
|
||||
) : (
|
||||
<Redirect to={{ pathname: '/dashboard' }} />
|
||||
)
|
||||
}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export default PublicRoute;
|
||||
Reference in New Issue
Block a user