Oi pessoal, beleza?
Eu to fazendo o curso e utilizando o react-router
4 porém quando vou fazer a liberação para acessar a URL pública não sei se estou aplicando a solução correta.
Basicamente, criei um componente para URLs autenticadas. Dentro do componente eu pego qual o path e faço um replace do dele para ter o valor, ai eu vejo se dentro dos parametros que tem em match ele existe ou não.
Isso funcionou, mas não acho que seja a melhor forma para fazer! Alguma dica?
import React from 'react';
import { Route, Redirect, withRouter } from 'react-router-dom';
const Authenticated = ({ component: Component, ...rest }) => (
<Route {...rest} render={(props) => {
const key = props.match.path.replace(/^.*[\\\/]:/, '').replace('?', '');
const isTrue = props.match.params[key] === undefined;
if (isTrue && !localStorage.getItem('auth-token')) {
return (<Redirect to="/?msg=voce nao pode acessar, é preciso estar logado" />);
} else {
return (<Component {...props} />);
}
}} />
);
export default Authenticated;