You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

30 lines
773 B

import PropTypes from "prop-types";
import React from "react";
import { connect } from "react-redux";
import { Redirect, Route } from "react-router-dom";
const propTypes = {
path: PropTypes.string.isRequired,
userToken: PropTypes.string.isRequired,
component: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired
};
const PrivateRoute = ({ userToken, component, ...rest }) => {
return (
<Route
{...rest}
render={props => {
if (!!userToken) return React.createElement(component, props);
return <Redirect to="/auth/login" />;
}}
/>
);
};
PrivateRoute.propTypes = propTypes;
const mapStateToProps = state => ({
userToken: state.auth.userToken
});
export default connect(mapStateToProps)(PrivateRoute);