import 'babel/polyfill'; import React from 'react'; import { Router } from 'react-router'; import BrowserHistory from 'react-router/lib/BrowserHistory'; import { Provider } from 'redux/react'; import createRedux from './redux/createRedux'; import { createRoutes } from './routes'; import getInitialState from './core/getInitialState'; import bindCheckAuth from './core/auth-helpers.js'; function run() { const reactRoot = window.document.getElementById('app'); const state = getInitialState('#__INITIAL_STATE__'); const redux = createRedux(state); const requireAccess = bindCheckAuth(redux, (nextState, transition) => { /* Current version need this hack to avoid infinite /login redirect Need to fetch error states: 1) "user not authorized" => [401] => redirect to login 2) "access denied" => [403] => redirect to 403 page */ if (nextState.location.pathname === '/login') { return; } transition.to('/login', { next: nextState.location.pathname }); }); const routes = createRoutes(redux, requireAccess); const history = new BrowserHistory(); React.render(( {() => } ), reactRoot); } // Run the application when both DOM is ready // and page content is loaded Promise.all([ new Promise((resolve) => { if (window.addEventListener) { window.addEventListener('DOMContentLoaded', resolve); } else { window.attachEvent('onload', resolve); } }) ]).then(run);