From 5ccee4aea2d4f3e8c671564d50e6172fae9691cb Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Fri, 25 Sep 2020 22:15:22 -0400 Subject: [PATCH] Add session timeout support Intercept all http(s) responses and store expiration time from headers in local storage. Drive expiration timers in app container across all tabs with browser storage events and accompanying react hooks integration. Show a warning with logout countdown and continue button when session is nearly expired. --- awx/ui_next/docs/APP_ARCHITECTURE.md | 27 +++++ awx/ui_next/docs/images/sessionExpiration.png | Bin 0 -> 72136 bytes awx/ui_next/docs/images/useStorage.png | Bin 0 -> 58478 bytes awx/ui_next/src/api/Base.js | 11 ++ .../components/AppContainer/AppContainer.jsx | 110 +++++++++++++++++- awx/ui_next/src/constants.js | 2 + 6 files changed, 147 insertions(+), 3 deletions(-) create mode 100644 awx/ui_next/docs/APP_ARCHITECTURE.md create mode 100644 awx/ui_next/docs/images/sessionExpiration.png create mode 100644 awx/ui_next/docs/images/useStorage.png diff --git a/awx/ui_next/docs/APP_ARCHITECTURE.md b/awx/ui_next/docs/APP_ARCHITECTURE.md new file mode 100644 index 0000000000..4be18f17d2 --- /dev/null +++ b/awx/ui_next/docs/APP_ARCHITECTURE.md @@ -0,0 +1,27 @@ +# Application Architecture + +## Local Storage Integration +The `useStorage` hook integrates with the browser's localStorage api. +It accepts a localStorage key as its only argument and returns a state +variable and setter function for that state variable. The hook enables +bidirectional data transfer between tabs via an event listener that +is registered with the Web Storage api. + + +![Sequence Diagram for useStorage](images/useStorage.png) + +The `useStorage` hook currently lives in the `AppContainer` component. It +can be relocated to a more general location should and if the need +ever arise + +## Session Expiration +Session timeout state is communicated to the client in the HTTP(S) +response headers. Every HTTP(S) response is intercepted to read the +session expiration time before being passed into the rest of the +application. A timeout date is computed from the intercepted HTTP(S) +headers and is pushed into local storage, where it can be read using +standard Web Storage apis or other utilities, such as `useStorage`. + + +![Sequence Diagram for session expiration](images/sessionExpiration.png) + diff --git a/awx/ui_next/docs/images/sessionExpiration.png b/awx/ui_next/docs/images/sessionExpiration.png new file mode 100644 index 0000000000000000000000000000000000000000..fa740c44a5a698525cc7fd8a3cc6ff5cc7251f81 GIT binary patch literal 72136 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 H3%CA1_yz|s literal 0 HcmV?d00001 diff --git a/awx/ui_next/docs/images/useStorage.png b/awx/ui_next/docs/images/useStorage.png new file mode 100644 index 0000000000000000000000000000000000000000..712b4771216296380433f2fd338fcd7aa3f563cd GIT binary patch literal 58478 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 literal 0 HcmV?d00001 diff --git a/awx/ui_next/src/api/Base.js b/awx/ui_next/src/api/Base.js index 56492715fb..c8d70203a2 100644 --- a/awx/ui_next/src/api/Base.js +++ b/awx/ui_next/src/api/Base.js @@ -1,5 +1,6 @@ import axios from 'axios'; +import { SESSION_TIMEOUT_KEY } from '../constants'; import { encodeQueryString } from '../util/qs'; const defaultHttp = axios.create({ @@ -10,6 +11,16 @@ const defaultHttp = axios.create({ }, }); +defaultHttp.interceptors.response.use(response => { + const timeout = response?.headers['session-timeout']; + if (timeout) { + const timeoutDate = new Date().getTime() + timeout * 1000; + window.localStorage.setItem(SESSION_TIMEOUT_KEY, String(timeoutDate)); + window.dispatchEvent(new Event('storage')); + } + return response; +}); + class Base { constructor(http = defaultHttp, baseURL) { this.http = http; diff --git a/awx/ui_next/src/components/AppContainer/AppContainer.jsx b/awx/ui_next/src/components/AppContainer/AppContainer.jsx index b107fd0f40..4cb9578843 100644 --- a/awx/ui_next/src/components/AppContainer/AppContainer.jsx +++ b/awx/ui_next/src/components/AppContainer/AppContainer.jsx @@ -1,6 +1,7 @@ -import React, { useEffect, useState, useCallback } from 'react'; +import React, { useEffect, useState, useCallback, useRef } from 'react'; import { useHistory, useLocation, withRouter } from 'react-router-dom'; import { + Button, Nav, NavList, Page, @@ -13,6 +14,8 @@ import styled from 'styled-components'; import { ConfigAPI, MeAPI, RootAPI } from '../../api'; import { ConfigProvider } from '../../contexts/Config'; +import { SESSION_TIMEOUT_KEY } from '../../constants'; +import { isAuthenticated } from '../../util/auth'; import About from '../About'; import AlertModal from '../AlertModal'; import ErrorDetail from '../ErrorDetail'; @@ -20,6 +23,12 @@ import BrandLogo from './BrandLogo'; import NavExpandableGroup from './NavExpandableGroup'; import PageHeaderToolbar from './PageHeaderToolbar'; +// The number of seconds the session timeout warning is displayed +// before the user is logged out. Increasing this number (up to +// the total session time, which is 1800s by default) will cause +// the session timeout warning to display sooner. +const SESSION_WARNING_DURATION = 10; + const PageHeader = styled(PFPageHeader)` & .pf-c-page__header-brand-link { color: inherit; @@ -30,6 +39,45 @@ const PageHeader = styled(PFPageHeader)` } `; +/** + * The useStorage hook integrates with the browser's localStorage api. + * It accepts a storage key as its only argument and returns a state + * variable and setter function for that state variable. + * + * This utility behaves much like the standard useState hook with some + * key differences: + * 1. You don't pass it an initial value. Instead, the provided key + * is used to retrieve the initial value from local storage. If + * the key doesn't exist in local storage, null is returned. + * 2. Behind the scenes, this hook registers an event listener with + * the Web Storage api to establish a two-way binding between the + * state variable and its corresponding local storage value. This + * means that updates to the state variable with the setter + * function will produce a corresponding update to the local + * storage value and vice-versa. + * 3. When local storage is shared across browser tabs, the data + * binding is also shared across browser tabs. This means that + * updates to the state variable using the setter function on + * one tab will also update the state variable on any other tab + * using this hook with the same key and vice-versa. + */ +function useStorage(key) { + const [storageVal, setStorageVal] = useState( + window.localStorage.getItem(key) + ); + window.addEventListener('storage', () => { + const newVal = window.localStorage.getItem(key); + if (newVal !== storageVal) { + setStorageVal(newVal); + } + }); + const setValue = val => { + window.localStorage.setItem(key, val); + setStorageVal(val); + }; + return [storageVal, setValue]; +} + function AppContainer({ i18n, navRouteConfig = [], children }) { const history = useHistory(); const { pathname } = useLocation(); @@ -38,14 +86,51 @@ function AppContainer({ i18n, navRouteConfig = [], children }) { const [isAboutModalOpen, setIsAboutModalOpen] = useState(false); const [isReady, setIsReady] = useState(false); + const sessionTimeoutId = useRef(); + const sessionIntervalId = useRef(); + const [sessionTimeout, setSessionTimeout] = useStorage(SESSION_TIMEOUT_KEY); + const [timeoutWarning, setTimeoutWarning] = useState(false); + const [timeRemaining, setTimeRemaining] = useState(Infinity); + const handleAboutModalOpen = () => setIsAboutModalOpen(true); const handleAboutModalClose = () => setIsAboutModalOpen(false); const handleConfigErrorClose = () => setConfigError(null); + const handleSessionTimeout = () => setTimeoutWarning(true); const handleLogout = useCallback(async () => { await RootAPI.logout(); - history.replace('/login'); - }, [history]); + setSessionTimeout(null); + }, [setSessionTimeout]); + + const handleSessionContinue = () => { + MeAPI.read(); + setTimeoutWarning(false); + }; + + useEffect(() => { + if (!isAuthenticated(document.cookie)) history.replace('/login'); + const calcRemaining = () => + parseInt(sessionTimeout, 10) - new Date().getTime(); + const updateRemaining = () => setTimeRemaining(calcRemaining()); + setTimeoutWarning(false); + clearTimeout(sessionTimeoutId.current); + clearInterval(sessionIntervalId.current); + sessionTimeoutId.current = setTimeout( + handleSessionTimeout, + calcRemaining() - SESSION_WARNING_DURATION * 1000 + ); + sessionIntervalId.current = setInterval(updateRemaining, 1000); + return () => { + clearTimeout(sessionTimeoutId.current); + clearInterval(sessionIntervalId.current); + }; + }, [history, sessionTimeout]); + + useEffect(() => { + if (timeRemaining <= 1) { + handleLogout(); + } + }, [handleLogout, timeRemaining]); useEffect(() => { const loadConfig = async () => { @@ -128,6 +213,25 @@ function AppContainer({ i18n, navRouteConfig = [], children }) { {i18n._(t`Failed to retrieve configuration.`)} + 0 && timeRemaining > 0} + onClose={handleLogout} + variant="warning" + actions={[ + , + ]} + > + {i18n._(t`You will be logged out in`)}{' '} + {Number(Math.floor(timeRemaining / 1000))}{' '} + {i18n._(t`seconds due to inactivity.`)} + ); } diff --git a/awx/ui_next/src/constants.js b/awx/ui_next/src/constants.js index b7fa1fc83e..663814439e 100644 --- a/awx/ui_next/src/constants.js +++ b/awx/ui_next/src/constants.js @@ -7,3 +7,5 @@ export const JOB_TYPE_URL_SEGMENTS = { ad_hoc_command: 'command', workflow_job: 'workflow', }; + +export const SESSION_TIMEOUT_KEY = 'awx-session-timeout';