From 0e655f2613ced169c493d2986d91cfc45d19b53d Mon Sep 17 00:00:00 2001 From: Markus Grigull Date: Mon, 27 Mar 2017 20:12:58 +0200 Subject: [PATCH] Fix user login --- src/containers/app.js | 7 +++++++ src/containers/login.js | 30 ++++++++++++++++-------------- src/stores/user-store.js | 12 ++++++++++-- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/containers/app.js b/src/containers/app.js index ee162c6..7768e89 100644 --- a/src/containers/app.js +++ b/src/containers/app.js @@ -95,6 +95,13 @@ class App extends Component { } componentWillUpdate(nextProps, nextState) { + // check if user is still logged in + if (UserStore.getState().token == null) { + this.props.router.push('/login'); + + return; + } + // open connection to each required simulator const requiredSimulators = this.requiredSimulatorsBySimulations(); diff --git a/src/containers/login.js b/src/containers/login.js index 4541ebf..7f62ab4 100644 --- a/src/containers/login.js +++ b/src/containers/login.js @@ -32,22 +32,24 @@ class Login extends Component { componentWillUpdate(nextProps, nextState) { // if token stored locally, request user - const token = localStorage.getItem('token'); + if (nextState.token == null) { + const token = localStorage.getItem('token'); - if (token != null && token !== '') { - AppDispatcher.dispatch({ - type: 'users/logged-in', - token: token - }); - } + if (token != null && token !== '' && nextState.currentUser == null) { + AppDispatcher.dispatch({ + type: 'users/logged-in', + token: token + }); + } + } else { + // check if logged in + if (nextState.currentUser != null) { + // save login in local storage + localStorage.setItem('token', nextState.token); - // check if logged in - if (nextState.currentUser != null) { - // save login in local storage - localStorage.setItem('token', this.state.token); - - // transition to index - this.props.router.push('/'); + // transition to index + nextProps.router.push('/'); + } } } diff --git a/src/stores/user-store.js b/src/stores/user-store.js index b094ee3..b7be604 100644 --- a/src/stores/user-store.js +++ b/src/stores/user-store.js @@ -26,6 +26,8 @@ class UserStore extends ReduceStore { } reduce(state, action) { + console.log(action.type); + switch (action.type) { case 'users/login': UsersDataManager.login(action.username, action.password); @@ -37,13 +39,19 @@ class UserStore extends ReduceStore { case 'users/logged-in': // request logged-in user data + console.log(action.token); UsersDataManager.getCurrentUser(action.token); - return { token: action.token }; + return Object.assign({}, state, { token: action.token }); case 'users/current-user': // save logged-in user - return { currentUser: action.user }; + return Object.assign({}, state, { currentUser: action.user }); + + case 'users/current-user-error': + // discard user token + //return { currentUser: null, token: null }; + return state; case 'users/login-error': console.log(action);