|
@@ -1,19 +1,64 @@
|
|
-import React from "react";
|
|
|
|
-import { Switch, Route } from "react-router-dom";
|
|
|
|
-import AuthPage from './containers/AuthPage';
|
|
|
|
|
|
+
|
|
|
|
+import React, { Suspense, lazy } from "react";
|
|
|
|
+import { Switch, Route, withRouter } from "react-router-dom";
|
|
|
|
+import { connect } from 'react-redux';
|
|
|
|
+import { tokenAuth } from './actions/auth/tokenAuth'
|
|
|
|
+
|
|
import Header from "./containers/header";
|
|
import Header from "./containers/header";
|
|
-import AddCard from "./containers/new-card/add-card";
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-export default () => (
|
|
|
|
- <div className="container">
|
|
|
|
- <Header />
|
|
|
|
- <Switch>
|
|
|
|
- <Route path="/" exact component={AuthPage} />
|
|
|
|
- <Route path="/favorites" exact component={AuthPage} />
|
|
|
|
- <Route path="/add" exact component={AddCard} />
|
|
|
|
- <Route path="/passed" exact component={AuthPage} />
|
|
|
|
- <Route path="/results" exact component={AuthPage} />
|
|
|
|
- </Switch>
|
|
|
|
- </div>
|
|
|
|
-);
|
|
|
|
|
|
+import Footer from './components/public-components/footer';
|
|
|
|
+
|
|
|
|
+import Spinner from "./components/common/spinner";
|
|
|
|
+
|
|
|
|
+import ProtectedRoute from './components/common/protectedRoute';
|
|
|
|
+import config from './components/common/protectedRoute/config';
|
|
|
|
+
|
|
|
|
+import fakeToken from './utils/token'
|
|
|
|
+import { bindActionCreators } from "redux";
|
|
|
|
+
|
|
|
|
+const notFound = lazy(() => import('./components/public-components/notFound'));
|
|
|
|
+
|
|
|
|
+class Router extends React.Component {
|
|
|
|
+
|
|
|
|
+ componentDidMount() {
|
|
|
|
+ const storagedUser = localStorage.getItem(fakeToken);
|
|
|
|
+ const { tokenAuth } = this.props;
|
|
|
|
+
|
|
|
|
+ storagedUser && tokenAuth(storagedUser);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ render() {
|
|
|
|
+ const { user } = this.props;
|
|
|
|
+
|
|
|
|
+ //map located here because of switch-bag
|
|
|
|
+
|
|
|
|
+ const protectedRoutes = config.map(route =>
|
|
|
|
+ <ProtectedRoute
|
|
|
|
+ path={route.path}
|
|
|
|
+ component={route.component}
|
|
|
|
+ access={route.access}
|
|
|
|
+ user={user}
|
|
|
|
+ exact
|
|
|
|
+ />
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ return (
|
|
|
|
+ <div className="app">
|
|
|
|
+ <Header />
|
|
|
|
+ <Suspense fallback={<Spinner />}>
|
|
|
|
+ <Switch>
|
|
|
|
+ {protectedRoutes}
|
|
|
|
+ <Route component={notFound} />
|
|
|
|
+ </Switch>
|
|
|
|
+ </Suspense>
|
|
|
|
+ <Footer />
|
|
|
|
+ </div>
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const mapStateToProps = state => ({
|
|
|
|
+ user: state.user
|
|
|
|
+})
|
|
|
|
+const mapDispatchToProps = dispatch => bindActionCreators({ tokenAuth }, dispatch);
|
|
|
|
+
|
|
|
|
+export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Router));
|