diff --git a/src/common/menu-sidebar.js b/src/common/menu-sidebar.js
index 2e953f8..f70d599 100644
--- a/src/common/menu-sidebar.js
+++ b/src/common/menu-sidebar.js
@@ -17,9 +17,73 @@
import React from 'react';
import { NavLink } from 'react-router-dom';
+import { Container } from 'flux/utils';
+import LoginStore from '../user/login-store';
+import AppDispatcher from './app-dispatcher';
+
class SidebarMenu extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.state = {
+ externalAuth: false,
+ logoutLink: "",
+ }
+ }
+
+ static getStores() {
+ return [LoginStore]
+ }
+
+ static calculateState(prevState, props) {
+ let config = LoginStore.getState().config;
+ let logout_url = _.get(config, ['authentication', 'logout_url']);
+
+ if (logout_url) {
+ return {
+ externalAuth: true,
+ logoutLink: logout_url,
+ }
+ }
+
+ return {
+ externalAuth: false,
+ logoutLink: "/logout",
+ }
+ }
+
+ logout() {
+ AppDispatcher.dispatch({
+ type: 'users/logout'
+ });
+ // The Login Store is deleted automatically
+
+ // discard login token and current User
+ localStorage.setItem('token', '');
+ localStorage.setItem('currentUser', '');
+ }
+
render() {
+ if (this.state.externalAuth) {
+ return (
+
+
Menu
+
+ - Home
+ - Scenarios
+ - Infrastructure Components
+ { this.props.currentRole === 'Admin' ?
+ - User Management
: ''
+ }
+ - Account
+ Logout
+ - API Browser
+
+
+ );
+ }
+
return (
Menu
@@ -32,7 +96,7 @@ class SidebarMenu extends React.Component {
User Management : ''
}
Account
- Logout
+ Logout
API Browser
@@ -40,4 +104,5 @@ class SidebarMenu extends React.Component {
}
}
-export default SidebarMenu;
+let fluxContainerConverter = require('../common/FluxContainerConverter');
+export default Container.create(fluxContainerConverter.convert(SidebarMenu));
\ No newline at end of file
diff --git a/src/user/logout.js b/src/user/logout.js
index bae8d96..7ffce70 100644
--- a/src/user/logout.js
+++ b/src/user/logout.js
@@ -17,28 +17,11 @@
import React from 'react';
import { Redirect } from 'react-router-dom';
-import { Container } from 'flux/utils';
-
import AppDispatcher from '../common/app-dispatcher';
-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'
});
@@ -51,18 +34,10 @@ class Logout extends React.Component {
}
render() {
- if (this.state.config) {
- let logout_url = _.get(this.props.config, ['authentication', 'logout_url'])
- if (logout_url) {
- this.resetValues();
- window.location = logout_url;
- }
- }
return (
);
}
}
-let fluxContainerConverter = require('../common/FluxContainerConverter');
-export default Container.create(fluxContainerConverter.convert(Logout));
\ No newline at end of file
+export default Logout;
\ No newline at end of file