12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { connect } from 'react-redux';
- import { Router, Route, Redirect, Switch } from 'react-router-dom';
- import history from '../components/history';
- import { ConnectMain } from '../pages/main';
- import { ConnectLoginForm } from '../components/loginForm';
- import { ConnectRegistrationForm } from '../components/registrationForm';
- import { ConnectProfileEdit } from '../components/profile';
- const PrivateRoute = ({ component, isAuth, log, fallback, ...originalProps }) => {
- const PageWrapper = (pageProps) => {
- const OriginalPage = component
- if (log && !isAuth) {
- return <OriginalPage {...pageProps} />
- } else if (!isAuth) {
- return <Redirect to={fallback} />
- } else if (log && isAuth) {
- return <Redirect to={fallback} />
- } else {
- return <OriginalPage {...pageProps} />
- }
- }
- return (
- <Route component={PageWrapper} {...originalProps} />
- )
- }
- const ConnectPrivateRoute = connect(state => ({ isAuth: state?.auth?.token }))(PrivateRoute)
- const ChatRoutes = () => {
- return (
- <Router history={history}>
- <Switch>
- <ConnectPrivateRoute path="/login" component={ConnectLoginForm} log={true} fallback="/chat" exact />
- <ConnectPrivateRoute path="/registration" component={ConnectRegistrationForm} log={true} fallback="/chat" exact />
- <ConnectPrivateRoute path="/profile" component={ConnectProfileEdit} fallback="/login" />
- <ConnectPrivateRoute path="/:_id" component={ConnectMain} fallback="/login" />
- <Redirect from="/" to="/chat" />
- </Switch>
- </Router>
- )
- }
- const ConnectRoutes = connect(state => ({ isAuth: state.auth.token }))(ChatRoutes)
- export default ConnectRoutes
|