2018-10-30 09:35:47 -07:00
|
|
|
import React from 'react';
|
|
|
|
import { view } from 'react-easy-state';
|
|
|
|
import { hot } from 'react-hot-loader';
|
|
|
|
import { Switch, Route, RouteComponentProps, withRouter } from 'react-router';
|
|
|
|
|
|
|
|
import Template from 'components/Template';
|
|
|
|
import store from './store';
|
|
|
|
import Login from 'components/Login';
|
2019-02-21 14:23:46 -08:00
|
|
|
import MFAuth from 'components/MFAuth';
|
2018-10-30 09:35:47 -07:00
|
|
|
import Home from 'components/Home';
|
|
|
|
import Users from 'components/Users';
|
2019-01-16 21:01:29 -08:00
|
|
|
import UserDetail from 'components/UserDetail';
|
2019-01-09 11:08:25 -08:00
|
|
|
import Emails from 'components/Emails';
|
2018-10-30 09:35:47 -07:00
|
|
|
import Proposals from 'components/Proposals';
|
2019-01-09 10:23:08 -08:00
|
|
|
import ProposalDetail from 'components/ProposalDetail';
|
2019-01-30 09:59:15 -08:00
|
|
|
import RFPs from 'components/RFPs';
|
|
|
|
import RFPForm from 'components/RFPForm';
|
|
|
|
import RFPDetail from 'components/RFPDetail';
|
2019-02-06 07:54:43 -08:00
|
|
|
import Contributions from 'components/Contributions';
|
|
|
|
import ContributionForm from 'components/ContributionForm';
|
|
|
|
import ContributionDetail from 'components/ContributionDetail';
|
2019-02-17 11:15:40 -08:00
|
|
|
import Moderation from 'components/Moderation';
|
2019-02-21 21:22:16 -08:00
|
|
|
import Settings from 'components/Settings';
|
2018-10-30 09:35:47 -07:00
|
|
|
|
|
|
|
import 'styles/style.less';
|
|
|
|
|
|
|
|
type Props = RouteComponentProps<any>;
|
|
|
|
|
|
|
|
class Routes extends React.Component<Props> {
|
|
|
|
render() {
|
2019-02-20 14:35:13 -08:00
|
|
|
const { hasCheckedLogin, isLoggedIn, is2faAuthed } = store;
|
2018-10-30 09:35:47 -07:00
|
|
|
if (!hasCheckedLogin) {
|
|
|
|
return <div>checking auth status...</div>;
|
|
|
|
}
|
2019-02-21 14:23:46 -08:00
|
|
|
|
2018-10-30 09:35:47 -07:00
|
|
|
return (
|
|
|
|
<Template>
|
2019-02-21 14:23:46 -08:00
|
|
|
{!isLoggedIn ? (
|
2018-10-30 09:35:47 -07:00
|
|
|
<Login />
|
2019-02-21 14:23:46 -08:00
|
|
|
) : !is2faAuthed ? (
|
|
|
|
<MFAuth />
|
2018-10-30 09:35:47 -07:00
|
|
|
) : (
|
|
|
|
<Switch>
|
|
|
|
<Route path="/" exact={true} component={Home} />
|
2019-01-16 21:01:29 -08:00
|
|
|
<Route path="/users/:id" component={UserDetail} />
|
|
|
|
<Route path="/users" component={Users} />
|
2019-01-09 10:23:08 -08:00
|
|
|
<Route path="/proposals/:id" component={ProposalDetail} />
|
|
|
|
<Route path="/proposals" component={Proposals} />
|
2019-01-30 09:59:15 -08:00
|
|
|
<Route path="/rfps/new" component={RFPForm} />
|
|
|
|
<Route path="/rfps/:id/edit" component={RFPForm} />
|
|
|
|
<Route path="/rfps/:id" component={RFPDetail} />
|
|
|
|
<Route path="/rfps" component={RFPs} />
|
2019-02-06 07:54:43 -08:00
|
|
|
<Route path="/contributions/new" component={ContributionForm} />
|
|
|
|
<Route path="/contributions/:id/edit" component={ContributionForm} />
|
|
|
|
<Route path="/contributions/:id" component={ContributionDetail} />
|
|
|
|
<Route path="/contributions" component={Contributions} />
|
2019-01-09 11:08:25 -08:00
|
|
|
<Route path="/emails/:type?" component={Emails} />
|
2019-02-17 11:15:40 -08:00
|
|
|
<Route path="/moderation" component={Moderation} />
|
2019-02-21 21:22:16 -08:00
|
|
|
<Route path="/settings/2fa-reset" render={() => <MFAuth isReset={true} />} />
|
|
|
|
<Route path="/settings" component={Settings} />
|
2018-10-30 09:35:47 -07:00
|
|
|
</Switch>
|
|
|
|
)}
|
|
|
|
</Template>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const ConnectedRoutes = withRouter(view(Routes));
|
|
|
|
export default hot(module)(ConnectedRoutes);
|