Wait until after authentication to match route

pull/2796/head
Iris Scholten 2018-02-12 11:51:42 -08:00
parent 79bc8fd299
commit a4ac68e85d
1 changed files with 67 additions and 42 deletions

View File

@ -74,12 +74,19 @@ window.addEventListener('keyup', event => {
const history = syncHistoryWithStore(browserHistory, store) const history = syncHistoryWithStore(browserHistory, store)
const Root = React.createClass({ const Root = React.createClass({
getInitialState() {
return {
ready: false,
}
},
async componentWillMount() { async componentWillMount() {
this.flushErrorsQueue() this.flushErrorsQueue()
try { try {
await this.getLinks() await this.getLinks()
this.checkAuth() await this.checkAuth()
this.setState({ready: true})
} catch (error) { } catch (error) {
dispatch(errorThrown(error)) dispatch(errorThrown(error))
} }
@ -115,48 +122,66 @@ const Root = React.createClass({
}, },
render() { render() {
return ( return !this.state.ready
<Provider store={store}> ? <div className="page-spinner" />
<Router history={history}> : <Provider store={store}>
<Route path="/" component={UserIsAuthenticated(CheckSources)} /> <Router history={history}>
<Route path="/login" component={UserIsNotAuthenticated(Login)} /> <Route path="/" component={UserIsAuthenticated(CheckSources)} />
<Route path="/purgatory" component={UserIsAuthenticated(Purgatory)} /> <Route path="/login" component={UserIsNotAuthenticated(Login)} />
<Route <Route
path="/sources/new" path="/purgatory"
component={UserIsAuthenticated(SourcePage)} component={UserIsAuthenticated(Purgatory)}
/> />
<Route path="/sources/:sourceID" component={UserIsAuthenticated(App)}> <Route
<Route component={CheckSources}> path="/sources/new"
<Route path="status" component={StatusPage} /> component={UserIsAuthenticated(SourcePage)}
<Route path="hosts" component={HostsPage} /> />
<Route path="hosts/:hostID" component={HostPage} /> <Route
<Route path="chronograf/data-explorer" component={DataExplorer} /> path="/sources/:sourceID"
<Route path="dashboards" component={DashboardsPage} /> component={UserIsAuthenticated(App)}
<Route path="dashboards/:dashboardID" component={DashboardPage} /> >
<Route path="alerts" component={AlertsApp} /> <Route component={CheckSources}>
<Route path="alert-rules" component={KapacitorRulesPage} /> <Route path="status" component={StatusPage} />
<Route path="alert-rules/:ruleID" component={KapacitorRulePage} /> <Route path="hosts" component={HostsPage} />
<Route path="alert-rules/new" component={KapacitorRulePage} /> <Route path="hosts/:hostID" component={HostPage} />
<Route path="tickscript/new" component={TickscriptPage} /> <Route
<Route path="tickscript/:ruleID" component={TickscriptPage} /> path="chronograf/data-explorer"
<Route path="kapacitors/new" component={KapacitorPage} /> component={DataExplorer}
<Route path="kapacitors/:id/edit" component={KapacitorPage} /> />
<Route <Route path="dashboards" component={DashboardsPage} />
path="kapacitors/:id/edit:hash" <Route
component={KapacitorPage} path="dashboards/:dashboardID"
/> component={DashboardPage}
<Route path="kapacitor-tasks" component={KapacitorTasksPage} /> />
<Route path="admin-chronograf" component={AdminChronografPage} /> <Route path="alerts" component={AlertsApp} />
<Route path="admin-influxdb" component={AdminInfluxDBPage} /> <Route path="alert-rules" component={KapacitorRulesPage} />
<Route path="manage-sources" component={ManageSources} /> <Route
<Route path="manage-sources/new" component={SourcePage} /> path="alert-rules/:ruleID"
<Route path="manage-sources/:id/edit" component={SourcePage} /> component={KapacitorRulePage}
/>
<Route path="alert-rules/new" component={KapacitorRulePage} />
<Route path="tickscript/new" component={TickscriptPage} />
<Route path="tickscript/:ruleID" component={TickscriptPage} />
<Route path="kapacitors/new" component={KapacitorPage} />
<Route path="kapacitors/:id/edit" component={KapacitorPage} />
<Route
path="kapacitors/:id/edit:hash"
component={KapacitorPage}
/>
<Route path="kapacitor-tasks" component={KapacitorTasksPage} />
<Route
path="admin-chronograf"
component={AdminChronografPage}
/>
<Route path="admin-influxdb" component={AdminInfluxDBPage} />
<Route path="manage-sources" component={ManageSources} />
<Route path="manage-sources/new" component={SourcePage} />
<Route path="manage-sources/:id/edit" component={SourcePage} />
</Route>
</Route> </Route>
</Route> <Route path="*" component={NotFound} />
<Route path="*" component={NotFound} /> </Router>
</Router> </Provider>
</Provider>
)
}, },
}) })