Skip to content

Instantly share code, notes, and snippets.

@anomaly44
Created April 1, 2017 23:34
Show Gist options
  • Save anomaly44/20ac888aa42eded0990cec15ce3ed1f1 to your computer and use it in GitHub Desktop.
Save anomaly44/20ac888aa42eded0990cec15ce3ed1f1 to your computer and use it in GitHub Desktop.
import React, { PropTypes } from 'react'
import { Route, Redirect } from 'react-router-dom'
import { connect } from 'react-redux'
import { createStructuredSelector } from 'reselect'
import { selectLoggedIn } from '../User/selectors'
export const PrivateRoute = ({ component, ...rest, loggedIn }) => (
<Route {...rest} render={props => (
loggedIn ? (
React.createElement(component, props)
) : (
<Redirect to={{
pathname: '/login',
state: { from: props.location }
}}/>
)
)}/>
);
PrivateRoute.propTypes = {
loggedIn: PropTypes.bool.isRequired
};
const mapStateToProps = createStructuredSelector({
loggedIn: selectLoggedIn
});
export default connect(mapStateToProps)(PrivateRoute);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment