Files
wlan-cloud-ui/app/containers/App/components/ProtectedRouteWithLayout.js
Sean Macfarlane 5f3ab23ee1 added User Context
2020-05-08 14:08:44 -04:00

46 lines
1.0 KiB
JavaScript

import React from 'react';
import T from 'prop-types';
import { Route, Redirect } from 'react-router-dom';
import UserProvider from 'contexts/UserProvider';
import MasterLayout from 'containers/MasterLayout';
import { AUTH_TOKEN } from 'constants/index';
import { getItem } from 'utils/localStorage';
import { parseJwt } from 'utils/jwt';
const ProtectedRouteWithLayout = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props => {
const token = getItem(AUTH_TOKEN);
if (token) {
const jwt = parseJwt(token.access_token);
return (
<UserProvider email={jwt.userName} role={jwt.userRole} customerId={jwt.customerId}>
<MasterLayout>
<Component {...props} />
</MasterLayout>
</UserProvider>
);
}
return (
<Redirect
to={{
pathname: '/login',
}}
/>
);
}}
/>
);
ProtectedRouteWithLayout.propTypes = {
component: T.func.isRequired,
};
export default ProtectedRouteWithLayout;