import React from "react" import PropTypes from "prop-types" import { connect } from "react-redux" import { Route, Redirect } from "react-router-dom" import { setUserToken } from "./actions/users" const protectedRoute = ({ component: Component, isLogged, isActivated, isTokenSet, setUserToken, ...otherProps }) => { const isAuthenticated = () => { if (isTokenSet) { return true; } const token = localStorage.getItem("token"); if (isLogged || (token && token !== "")) { if (!isTokenSet) { setUserToken(token); } return true } return false } return ( { if (isAuthenticated()) { if (isActivated) { return } else { return } } else { return } }} /> ) } protectedRoute.propTypes = { component: PropTypes.func, isLogged: PropTypes.bool.isRequired, isActivated: PropTypes.bool.isRequired, isTokenSet: PropTypes.bool.isRequired, setUserToken: PropTypes.func.isRequired, }; export const ProtectedRoute = connect((state) => ({ isLogged: state.userStore.get("isLogged"), isAdmin: state.userStore.get("isLogged"), isActivated: state.userStore.get("isActivated"), isTokenSet: state.userStore.get("isTokenSet"), }), { setUserToken })(protectedRoute); const adminRoute = ({ component: Component, isAdmin, ...otherProps }) => { return ( { if (isAdmin) { return } else { return } }} /> ) } adminRoute.propTypes = { component: PropTypes.func, isAdmin: PropTypes.bool.isRequired, }; export const AdminRoute = connect((state) => ({ isAdmin: state.userStore.get("isLogged"), }))(adminRoute);