smarti/src/components/Route/PrivateRoute.js
2022-02-18 12:20:22 +01:00

42 lines
1.0 KiB
JavaScript

import React, { Component } from "react";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import { Route, Redirect, withRouter } from "react-router-dom";
class PrivateRoute extends Component {
render() {
return !this.props.progress ? (
<Route
{...this.props.exact}
render={({ location }) =>
this.props.isAuthenticated
? this.props.children
: (() => {
return (
<Redirect
to={{
pathname: "/user/login",
state: { from: location },
}}
/>
);
})()
}
/>
) : null;
}
}
PrivateRoute.propTypes = {
isAuthenticated: PropTypes.bool,
progress: PropTypes.bool.isRequired,
};
const mapStateToProps = (state) => ({
isAuthenticated: state.auth.isAuthenticated,
progress: state.auth.progress,
});
export default connect(mapStateToProps, null)(withRouter(PrivateRoute));