2018-10-01 14:01:20 -07:00
|
|
|
import React from 'react';
|
|
|
|
import { connect } from 'react-redux';
|
|
|
|
import { Route, Redirect, RouteProps } from 'react-router-dom';
|
|
|
|
import { AppState } from 'store/reducers';
|
|
|
|
|
|
|
|
interface StateProps {
|
|
|
|
user: AppState['auth']['user'];
|
|
|
|
}
|
|
|
|
|
|
|
|
interface OwnProps {
|
|
|
|
onlyLoggedOut?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
type Props = RouteProps & StateProps & OwnProps;
|
|
|
|
|
|
|
|
class AuthRoute extends React.Component<Props> {
|
|
|
|
public render() {
|
2018-12-14 11:36:22 -08:00
|
|
|
const { user, onlyLoggedOut, ...routeProps } = this.props;
|
|
|
|
if ((user && !onlyLoggedOut) || (!user && onlyLoggedOut)) {
|
2018-10-01 14:01:20 -07:00
|
|
|
return <Route {...routeProps} />;
|
|
|
|
} else {
|
|
|
|
// TODO: redirect to desired destination after auth
|
|
|
|
// TODO: Show alert that claims they need to be logged in
|
|
|
|
return <Redirect to={onlyLoggedOut ? '/profile' : '/auth'} />;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default connect((state: AppState) => ({
|
|
|
|
user: state.auth.user,
|
|
|
|
}))(AuthRoute);
|