React router v4 - Rotas autorizadas com HOC
Tenho um problema para impedir que usuários não autorizados acessem rotas / componentes somente autorizados - como o painel de usuários conectados
Eu tenho o seguinte código:
import React from 'react'
//other imports
import {withRouter} from 'react-router'
class User extends React.Component {
constructor(props) {
super(props)
console.log('props', props)
let user = JSON.parse(localStorage.getItem('userDetails'))
if(!user || !user.user || props.match.params.steamId !== user.user.steamId) {
props.history.push('/')
} else {
this.props.updateUserState(user)
this.props.getUser(user.user.steamId)
}
}
//render function
}
//mapStateToProps and mapDispatchToProps
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(User))
O roteador:
render() {
return (
<Router>
<div>
<Route exact path="/" component={Main}/>
<Route path="/user/:steamId" component={User}/>
<Route path="/completelogin" component={CompleteLogin}/>
</div>
</Router>
)
}
Tentei fazer logon para verificar se a condição foi inserida e, no entanto, recebo um erro da função render dizendo que ela não pode ler propriedades nulas.
Existe uma maneira de corrigir o meu problema e também uma abordagem melhor para atender às minhas necessidades? onde componentes específicos serão estritamente acessíveis apenas a usuários autorizados