2016-06-24 00:29:55 +02:00
|
|
|
import { Route, IndexRoute } from 'react-router';
|
|
|
|
import React from 'react';
|
2017-04-20 20:05:15 +02:00
|
|
|
import forceProtocol, { protocols, findSourceProtocol } from './components/forceProtocol';
|
2016-06-24 00:29:55 +02:00
|
|
|
import App from './modules/App/App';
|
|
|
|
import IDEView from './modules/IDE/pages/IDEView';
|
2016-08-18 00:13:17 +02:00
|
|
|
import FullView from './modules/IDE/pages/FullView';
|
2016-12-16 00:43:58 +01:00
|
|
|
import LoginView from './modules/User/pages/LoginView';
|
|
|
|
import SignupView from './modules/User/pages/SignupView';
|
2016-12-19 22:49:37 +01:00
|
|
|
import ResetPasswordView from './modules/User/pages/ResetPasswordView';
|
2017-06-26 18:48:28 +02:00
|
|
|
import EmailVerificationView from './modules/User/pages/EmailVerificationView';
|
2016-12-19 22:49:37 +01:00
|
|
|
import NewPasswordView from './modules/User/pages/NewPasswordView';
|
2017-03-16 23:25:12 +01:00
|
|
|
import AccountView from './modules/User/pages/AccountView';
|
2016-08-15 23:06:12 +02:00
|
|
|
// import SketchListView from './modules/Sketch/pages/SketchListView';
|
2016-06-24 00:29:55 +02:00
|
|
|
import { getUser } from './modules/User/actions';
|
2017-06-18 23:11:23 +02:00
|
|
|
import { stopSketch } from './modules/IDE/actions/ide';
|
2016-06-15 01:11:42 +02:00
|
|
|
|
|
|
|
const checkAuth = (store) => {
|
2016-06-24 00:29:55 +02:00
|
|
|
store.dispatch(getUser());
|
|
|
|
};
|
|
|
|
|
2017-06-18 23:11:23 +02:00
|
|
|
const onRouteChange = (store) => {
|
|
|
|
store.dispatch(stopSketch());
|
|
|
|
};
|
|
|
|
|
2017-03-30 18:36:26 +02:00
|
|
|
const routes = (store) => {
|
2017-04-20 20:05:15 +02:00
|
|
|
const sourceProtocol = findSourceProtocol(store.getState());
|
2017-03-30 18:36:26 +02:00
|
|
|
|
|
|
|
// If the flag is false, we stay on HTTP
|
|
|
|
const forceToHttps = forceProtocol({
|
2017-04-20 20:05:15 +02:00
|
|
|
targetProtocol: protocols.https,
|
2017-03-30 18:36:26 +02:00
|
|
|
sourceProtocol,
|
|
|
|
// prints debugging but does not reload page
|
|
|
|
disable: process.env.FORCE_TO_HTTPS === false,
|
|
|
|
});
|
|
|
|
|
|
|
|
return (
|
2017-06-18 23:11:23 +02:00
|
|
|
<Route path="/" component={App} onChange={() => { onRouteChange(store); }}>
|
2017-02-22 20:29:35 +01:00
|
|
|
<IndexRoute component={IDEView} onEnter={checkAuth(store)} />
|
2017-03-30 18:36:26 +02:00
|
|
|
<Route path="/login" component={forceToHttps(LoginView)} />
|
|
|
|
<Route path="/signup" component={forceToHttps(SignupView)} />
|
|
|
|
<Route path="/reset-password" component={forceToHttps(ResetPasswordView)} />
|
2017-06-26 18:48:28 +02:00
|
|
|
<Route path="/verify" component={forceToHttps(EmailVerificationView)} />
|
2017-03-30 18:36:26 +02:00
|
|
|
<Route
|
|
|
|
path="/reset-password/:reset_password_token"
|
|
|
|
component={forceToHttps(NewPasswordView)}
|
|
|
|
/>
|
2017-02-22 20:29:35 +01:00
|
|
|
<Route path="/projects/:project_id" component={IDEView} />
|
|
|
|
<Route path="/full/:project_id" component={FullView} />
|
|
|
|
<Route path="/sketches" component={IDEView} />
|
|
|
|
<Route path="/:username/sketches/:project_id" component={IDEView} />
|
|
|
|
<Route path="/:username/sketches" component={IDEView} />
|
2017-03-30 18:36:26 +02:00
|
|
|
<Route path="/:username/account" component={forceToHttps(AccountView)} />
|
2017-02-22 20:29:35 +01:00
|
|
|
<Route path="/about" component={IDEView} />
|
|
|
|
</Route>
|
2016-06-24 00:29:55 +02:00
|
|
|
);
|
2017-03-30 18:36:26 +02:00
|
|
|
};
|
2016-05-18 19:37:59 +02:00
|
|
|
|
2016-06-24 00:29:55 +02:00
|
|
|
export default routes;
|