diff --git a/src/app.js b/src/app.js
index bcaced0..eb1959e 100644
--- a/src/app.js
+++ b/src/app.js
@@ -45,6 +45,11 @@ class App extends React.Component {
constructor(props) {
super(props);
+
+ AppDispatcher.dispatch({
+ type: 'config/load',
+ });
+
this.state = {
showSidebarMenu: false,
}
diff --git a/src/user/login-store.js b/src/user/login-store.js
index 7eb4b2b..3e0eba6 100644
--- a/src/user/login-store.js
+++ b/src/user/login-store.js
@@ -46,8 +46,7 @@ class LoginStore extends ReduceStore {
return Object.assign({}, state, { config: action.data });
case 'config/load-error':
- console.log("config load error");
- return Object.assign({}, state, { config: null });
+ return Object.assign({}, state, { config: null});
case 'users/login':
UsersDataManager.login(action.username, action.password);
diff --git a/src/user/login.js b/src/user/login.js
index a9814b1..ea38f89 100644
--- a/src/user/login.js
+++ b/src/user/login.js
@@ -29,25 +29,28 @@ import LoginStore from './login-store'
import AppDispatcher from '../common/app-dispatcher';
class Login extends Component {
+ constructor(props) {
+ super(props);
- static getStores(){
+ // load config in case the user goes directly to /login
+ // otherwise it will be loaded in app constructor
+ AppDispatcher.dispatch({
+ type: 'config/load',
+ });
+ }
+
+ static getStores() {
return [LoginStore]
}
static calculateState(prevState, props) {
// We need to work with the login store here to trigger the re-render upon state change after login
// Upon successful login, the token and currentUser are stored in the local storage as strings
- const config = LoginStore.getState().config;
- if (config === null) {
- AppDispatcher.dispatch({
- type: 'config/load',
- });
- }
return {
loginMessage: LoginStore.getState().loginMessage,
token: LoginStore.getState().token,
currentUser: LoginStore.getState().currentUser,
- config: config,
+ config: LoginStore.getState().config,
}
}
diff --git a/src/user/logout.js b/src/user/logout.js
index 4b9aa81..bae8d96 100644
--- a/src/user/logout.js
+++ b/src/user/logout.js
@@ -17,12 +17,28 @@
import React from 'react';
import { Redirect } from 'react-router-dom';
+import { Container } from 'flux/utils';
import AppDispatcher from '../common/app-dispatcher';
-import Config from '../config.js';
+import LoginStore from './login-store'
class Logout extends React.Component {
+
+ static getStores() {
+ return [LoginStore]
+ }
+
+ static calculateState(prevState, props) {
+ return {
+ config: LoginStore.getState().config,
+ }
+ }
+
componentDidMount() {
+ this.resetValues();
+ }
+
+ resetValues() {
AppDispatcher.dispatch({
type: 'users/logout'
});
@@ -35,10 +51,18 @@ class Logout extends React.Component {
}
render() {
- return (
-
- );
+ if (this.state.config) {
+ let logout_url = _.get(this.props.config, ['authentication', 'logout_url'])
+ if (logout_url) {
+ this.resetValues();
+ window.location = logout_url;
+ }
+ }
+ return (
+
+ );
}
}
-export default Logout;
+let fluxContainerConverter = require('../common/FluxContainerConverter');
+export default Container.create(fluxContainerConverter.convert(Logout));
\ No newline at end of file