From 4c795701b49a50929ef4b1ebf346db145ac2de09 Mon Sep 17 00:00:00 2001 From: Markus Grigull Date: Mon, 27 Mar 2017 20:52:44 +0200 Subject: [PATCH] Force logout when backend is offline --- src/containers/app.js | 8 +++++--- src/containers/logout.js | 8 ++++---- src/stores/user-store.js | 8 ++------ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/containers/app.js b/src/containers/app.js index 3f8ccff..8b3e7aa 100644 --- a/src/containers/app.js +++ b/src/containers/app.js @@ -65,6 +65,7 @@ class App extends Component { return { simulations: SimulationStore.getState(), currentUser: UserStore.getState().currentUser, + token: UserStore.getState().token, runningSimulators: simulators }; @@ -96,10 +97,11 @@ class App extends Component { componentWillUpdate(nextProps, nextState) { // check if user is still logged in - if (UserStore.getState().token == null) { - //this.props.router.push('/login'); + if (nextState.token == null) { + // discard local token + localStorage.setItem('token', ''); - //return; + this.props.router.push('/login'); } // open connection to each required simulator diff --git a/src/containers/logout.js b/src/containers/logout.js index 35078c4..91dc617 100644 --- a/src/containers/logout.js +++ b/src/containers/logout.js @@ -28,14 +28,14 @@ class Home extends Component { AppDispatcher.dispatch({ type: 'users/logout' }); + + // discard login token + localStorage.setItem('token', ''); } componentWillUpdate(nextProps, nextState) { // check if logged out - if (nextState.currentUser == null) { - // discard login token - localStorage.setItem('token', ''); - + if (nextState.token == null) { // transition to login page nextProps.router.push('/login'); } diff --git a/src/stores/user-store.js b/src/stores/user-store.js index a256ded..c2111b7 100644 --- a/src/stores/user-store.js +++ b/src/stores/user-store.js @@ -26,8 +26,6 @@ class UserStore extends ReduceStore { } reduce(state, action) { - console.log(action.type); - switch (action.type) { case 'users/login': UsersDataManager.login(action.username, action.password); @@ -35,11 +33,10 @@ class UserStore extends ReduceStore { case 'users/logout': // delete user and token - return Object.assign({}, state, { token: null, currentUser: null }); + return Object.assign({}, state, { token: null }); case 'users/logged-in': // request logged-in user data - console.log(action.token); UsersDataManager.getCurrentUser(action.token); return Object.assign({}, state, { token: action.token }); @@ -50,8 +47,7 @@ class UserStore extends ReduceStore { case 'users/current-user-error': // discard user token - //return { currentUser: null, token: null }; - return state; + return Object.assign({}, state, { currentUser: null, token: null }); case 'users/login-error': console.log(action);