From c81efa0b4e11fc1d86c6b16efd8670cf29756d81 Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Fri, 6 Jan 2017 08:54:02 -0500 Subject: PLT-4758 fixing signaling of logout (#4984) --- webapp/components/logged_in.jsx | 25 ------------------------- webapp/components/root.jsx | 27 ++++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 26 deletions(-) (limited to 'webapp') diff --git a/webapp/components/logged_in.jsx b/webapp/components/logged_in.jsx index 841061d48..9282e74ca 100644 --- a/webapp/components/logged_in.jsx +++ b/webapp/components/logged_in.jsx @@ -4,7 +4,6 @@ import LoadingScreen from 'components/loading_screen.jsx'; import UserStore from 'stores/user_store.jsx'; -import BrowserStore from 'stores/browser_store.jsx'; import PreferenceStore from 'stores/preference_store.jsx'; import * as GlobalActions from 'actions/global_actions.jsx'; @@ -29,30 +28,6 @@ export default class LoggedIn extends React.Component { this.onUserChanged = this.onUserChanged.bind(this); this.setupUser = this.setupUser.bind(this); - // Force logout of all tabs if one tab is logged out - $(window).bind('storage', (e) => { - // when one tab on a browser logs out, it sets __logout__ in localStorage to trigger other tabs to log out - if (e.originalEvent.key === '__logout__' && e.originalEvent.storageArea === localStorage && e.originalEvent.newValue) { - // make sure it isn't this tab that is sending the logout signal (only necessary for IE11) - if (BrowserStore.isSignallingLogout(e.originalEvent.newValue)) { - return; - } - - console.log('detected logout from a different tab'); //eslint-disable-line no-console - GlobalActions.emitUserLoggedOutEvent('/', false); - } - - if (e.originalEvent.key === '__login__' && e.originalEvent.storageArea === localStorage && e.originalEvent.newValue) { - // make sure it isn't this tab that is sending the logout signal (only necessary for IE11) - if (BrowserStore.isSignallingLogin(e.originalEvent.newValue)) { - return; - } - - console.log('detected login from a different tab'); //eslint-disable-line no-console - location.reload(); - } - }); - // Because current CSS requires the root tag to have specific stuff $('#root').attr('class', 'channel-view'); diff --git a/webapp/components/root.jsx b/webapp/components/root.jsx index be50c7d48..465df5d79 100644 --- a/webapp/components/root.jsx +++ b/webapp/components/root.jsx @@ -8,11 +8,12 @@ import Client from 'client/web_client.jsx'; import {IntlProvider} from 'react-intl'; import React from 'react'; - import FastClick from 'fastclick'; +import $ from 'jquery'; import {browserHistory} from 'react-router/es6'; import UserStore from 'stores/user_store.jsx'; +import BrowserStore from 'stores/browser_store.jsx'; export default class Root extends React.Component { constructor(props) { @@ -35,6 +36,30 @@ export default class Root extends React.Component { } /*eslint-enable */ + // Force logout of all tabs if one tab is logged out + $(window).bind('storage', (e) => { + // when one tab on a browser logs out, it sets __logout__ in localStorage to trigger other tabs to log out + if (e.originalEvent.key === '__logout__' && e.originalEvent.storageArea === localStorage && e.originalEvent.newValue) { + // make sure it isn't this tab that is sending the logout signal (only necessary for IE11) + if (BrowserStore.isSignallingLogout(e.originalEvent.newValue)) { + return; + } + + console.log('detected logout from a different tab'); //eslint-disable-line no-console + GlobalActions.emitUserLoggedOutEvent('/', false); + } + + if (e.originalEvent.key === '__login__' && e.originalEvent.storageArea === localStorage && e.originalEvent.newValue) { + // make sure it isn't this tab that is sending the logout signal (only necessary for IE11) + if (BrowserStore.isSignallingLogin(e.originalEvent.newValue)) { + return; + } + + console.log('detected login from a different tab'); //eslint-disable-line no-console + location.reload(); + } + }); + // Fastclick FastClick.attach(document.body); } -- cgit v1.2.3-1-g7c22