React router v4: rutas autorizadas con HOC

Tengo un problema para evitar que usuarios no autorizados accedan a rutas / componentes solo autorizados, como el panel de usuarios conectados

Tengo el siguiente 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))

El enrutador:

render() {
    return (
      <Router>
        <div>
          <Route exact path="/" component={Main}/>
          <Route path="/user/:steamId" component={User}/>
          <Route path="/completelogin" component={CompleteLogin}/>
        </div>
      </Router>
    )
  }

Traté de iniciar sesión para verificar si se ingresó la condición y lo es, sin embargo, recibo un error de la función de procesamiento que dice que no puede leer las propiedades de nulo.

¿Hay alguna forma de solucionar mi problema y también un mejor enfoque para satisfacer mis necesidades? donde los componentes específicos serán estrictamente accesibles solo para usuarios autorizados

Respuestas a la pregunta(2)

Su respuesta a la pregunta