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